从变量初始化飞镖类

时间:2020-06-20 21:36:38

标签: flutter

让我们考虑一下,我们有一个页面列表,根据一些逻辑,我们想使用导航器显示相应的路线。我们该怎么做?

final List<dynamic> components = [ PageA, PageB ]
..
Navigator.push(
  context,
  MaterialPageRoute(
      builder: (context) =>  new components[0]()),
);

2 个答案:

答案 0 :(得分:3)

材料应用程序小部件内有路线属性。您应该使用它:

MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Sample',
      home: Wrapper(),
      routes: {
        CarsList.routeName: (ctx) => PageOne(),
        CarDisplay.routeName: (ctx) => PageTwo(),
        OrdersScreen.routeName: (ctx) => PageThree(),
        EditCar.routeName: (ctx) => PageFour(),
      },
    ),

在使用该功能之前,请确保每个小部件中都有一个名为routeName的静态变量。

static const routeName = '/PageOne';

答案 1 :(得分:0)

我不确定我是否完全了解您的发行人,但如果您的问题是在何处/如何放置条件,则有两种方法可以这样做:

假设根据条件,您何时导航至components [0]()或components [1]():

第一

final List<dynamic> components = [ PageA, PageB ]
..
Navigator.push(
  context,
  MaterialPageRoute(
      builder: (context) =>  condition ? new components[0]() : new component[1]()
  ),
);

第二:

 final List<dynamic> components = [ PageA, PageB ]
    ..
    Navigator.push(
      context,
      MaterialPageRoute(
          builder: (context) {  
          if (condition) {
              return new components[0]()
          } else {
              return new component[1]()
          }
      ),
    );