flutter – 导航器使用pushNamed传递参数
发布时间:2020-12-14 14:51:33 所属栏目:百科 来源:网络整理
导读:之前可能会被问到但是我找不到它,但是你如何将参数传递给命名路线? 这就是我构建路线的方式 Widget build(BuildContext context) { return new Navigator( initialRoute: 'home/chooseroom',onGenerateRoute: (RouteSettings settings) { WidgetBuilder bui
之前可能会被问到但是我找不到它,但是你如何将参数传递给命名路线?
这就是我构建路线的方式 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); },); 这就是你怎么称呼它 但是如果我的小部件是新的演示文稿(arg1,arg2,arg3)怎么办? 解决方法
基本上你有2个选择:
>使用一些第三方软件包进行路由 – 我认为最好的是Fluro. 要使用第二个选项,假设您要传递三个参数:Navigator.of(context).pushNamed(‘home / presentation:arg1:1337:hello’) MaterialApp ( ...,onGenerateRoute: handleRoute,routes:...,) Route<dynamic> handleRoute(RouteSettings settings) { WidgetBuilder builder; final List<String> uri = settings.name.split('/'); if (uri[0].startsWith('home')) { // handle all home routes: if(uri[1].startsWith('presentation:'){ // cut slice by slice final String allArgs = uri[1].substring('presentation:'.length); final List<String> args = allArgs.split(':'); // use your string args print(args[0]); // prints "arg1" int x = int.parse(args[1]); // becomes 1337 print(args[2]); // prints "hello" builder = (ctx)=> Presentation(args[0],args[1],args[2]); ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |