下面的代码中,屏幕被注册到路由中,然后可以通过调用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/