Flutter GoRouter不允许我传递任何非字符串的值作为参数。
收到错误
The following _TypeError was thrown while handling a gesture:
type 'int' is not a subtype of type 'Iterable<dynamic>'
接收int参数的页面:
class ItemOne extends StatelessWidget {
final int id;
const ItemOne({super.key, required this.id});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Item 1'),
),
body: Text('This is page for with id: $id'),
);
}
}
GoRouter定义
GoRoute(
path: '/one',
name: 'one',
builder: (context, state) {
return ItemOne(
id: state.queryParams['idGiven'] as int,
);
},
),
传递int值的按钮
IconButton(
onPressed: () => context.pushNamed(
'one',
queryParams: <String, dynamic>{
'idGiven': 111,
},
),
icon: const Text('Push One'),
),
1条答案
按热度按时间n7taea2i1#
是的,确实如此。
是从
String
到String
的Map。如果你想传递其他东西,你需要把它转换成一个字符串,然后再转换回来。
或者,如果要传递整个对象,则使用
extra
字段。