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(...);
}

https://stackoverflow.com/questions/53304340/

相关文章:

dart - 如何自定义日期选择器

flutter - 子类化扩展 StatelessWidget 或 StatefulWidget 类

dart - 在按钮单击时更新 flutter 中的文本字段

dart - 与容器装饰一起使用时,墨水瓶不显示波纹

android - Flutter - 如何使列屏幕可滚动

android - 可以在 Android Studio 中使用 Flutter 开发 IOS 吗?

flutter - 相机和图像选择器插件有什么区别?

flutter - 如何在 flutter 中检索当前的类名?

websocket - 如何在 Flutter 上使用 SignalR?

database - Flutter中的Sqlite,数据库 Assets 如何工作