flutter - 如何将参数传递给命名路由中的小部件?

标签 flutter flutter-widget flutter-routes

下面的代码中,屏幕被注册到路由中,然后可以通过调用Navigator.pushNamed(context, '/second');来导航到该屏幕。 。如果 SecondScreen 不需要任何参数,则此方法可以正常工作。如果 SecondScreen 需要参数 paramA 和 paramB,而这 2 个参数在应用初始化期间不可用,该怎么办?因此以下代码将不起作用,因为在 SecondScreen 注册到路由时 paramA 和 paramB 尚不可用。

void main() {
  runApp(
    MaterialApp(
      title: 'Named Routes Demo',
      initialRoute: '/',
      routes: {
        '/': (context) => const FirstScreen(),
        '/second': (context) => const SecondScreen(paramA, paramB),
      },
    ),
  );
}

如果这些小部件需要一些尚不可用的参数,如何将这些小部件注册到路由?

最佳答案

您可以为参数定义一个类ScreenArguments,然后您可以使用以下代码在小部件上获取它:

final args = ModalRoute.of(context)!.settings.arguments as ScreenArguments;

详细信息:https://docs.flutter.dev/cookbook/navigation/navigate-with-arguments

关于flutter - 如何将参数传递给命名路由中的小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73808601/

相关文章:

android - 如果按顺序单击选项卡,TabController 再次调用 initState

flutter - 为什么我的 flutter 应用程序中的 FAB 大小很大?

arrays - 用于返回数组的 flutter 列值

flutter - 如何使用 Flutter (Web) 将用户名作为网站的 URL,例如 appname.com/username?

json - 不是 '(String, dynamic) => MapEntry<dynamic, dynamic>' 的 'transform' 类型的子类型)

flutter - 如何使用Flutter检测animateCamera是否在Google MapView上完成?

flutter - 如何在 Flutter MapboxGL 中添加自定义小部件作为标记?

flutter - 如何在 flutter 桌面中自定义 AppMenu(MenuBar)?

flutter - 当前小部件完成加载后如何执行方法?

Flutter/Dart - 在 PageView 中编辑页面,然后刷新并滚动回同一个地方?