flutter - 导航器使用 pushNamed 传递参数
问题描述
之前可能有人问过,但我找不到,但你如何将参数传递给命名路由?
这就是我建立路线的方式
Widget build(BuildContext context) {
return new Navigator(
initialRoute: 'home/chooseroom',
onGenerateRoute: (RouteSettings settings) {
WidgetBuilder builder;
switch (settings.name) {
case 'home/chooseroom':
// navigates to 'signup/choose_credentials'.
builder = (BuildContext _) => new ChoosePage();
break;
case 'home/createpage':
builder = (BuildContext _) => new CreateRoomPage();
break;
case 'home/presentation':
builder = (BuildContext _) => new Presentation();
break;
default:
throw new Exception('Invalid route: ${settings.name}');
}
return new MaterialPageRoute(builder: builder, settings: settings);
},
);
这就是你的称呼
Navigator.of(context).pushNamed('home/presentation')
但是如果我的小部件是new Presentation(arg1, arg2, arg3)
怎么办?
解决方案
不需要onGenerateRoute
。只需使用
var exampleArgument = 'example string';
Navigator.pushNamed(
context,
'/otherscreen',
arguments: {'exampleArgument': exampleArgument},
);
并提取参数如下:
@override
Widget build(BuildContext context) {
final arguments = (ModalRoute.of(context)?.settings.arguments ?? <String, dynamic>{}) as Map;
print(arguments['exampleArgument']);
return Scaffold(...);
}
推荐阅读
- r - 找不到我的 bookdown 书目文件
- javascript - 从 Javascript 读取的 CSV 文件上的平方问号符号
- flutter - 自定义液体滑动动画
- java - NoSuchMethodException while sending email in spring boot
- javascript - 拖动操作在 iOS Safari 上运行良好,但在 Android 上不行
- python - 获得更好的 OCR 结果
- django-models - django 按另一个类对类对象进行排序
- java - Android 无法解析内部网络上的主机名 - 但我无法使用 IP 地址
- javascript - 2个数组匹配,对象数组的转换
- visual-studio-code - 如何将 TextMate 语法注入 VS Code 中的 Markdown 标题?