dart - 如何将非字符串数据传递给 Flutter 中的命名路由?

我有很多屏幕,我正在使用 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/

相关文章:

flutter - 如何在 Flutter 中设置按钮的宽度和高度?

flutter - 如何根据父级的大小布局小部件?

visual-studio-code - 如何为 Flutter 模拟器的 Visual Studi

flutter - 如何获取 Widget 的高度?

flutter - 从 StatefulWidget 外部控制状态

git - flutter 安装期间的libusbmuxd版本错误

flutter - InkWell 没有显示涟漪效应

angular - NativeScript 与 Flutter

flutter - 有多个英雄在子树中共享相同的标签

functional-programming - Dart:映射列表(list.map)