我有很多屏幕,我正在使用 Navigator
。我想使用“命名路线”,但我还需要将非字符串(例如图像)传递给我的下一条路线。
我不能使用 pushNamed()
因为我不能将非字符串数据传递给它。
如何使用命名路由+发送非字符串数据?
最佳答案
编辑:
现在可以将复杂的参数传递给 Navigator.pushNamed
:
String id;
Navigator.pushNamed(context, '/users', arguments: id);
然后可以在 onGenerateRoute
中使用这些参数来自定义路由构建:
MaterialApp(
title: 'Flutter Hooks Gallery',
onGenerateRoute: (settings) {
final arguments = settings.arguments;
switch (settings.name) {
case '/users':
if (arguments is String) {
// the details page for one specific user
return UserDetails(arguments);
}
else {
// a route showing the list of all users
return UserList();
}
default:
return null;
}
},
);
https://stackoverflow.com/questions/47419908/