Инициализировать класс дротика из переменной - PullRequest
1 голос
/ 21 июня 2020

Предположим, у нас есть список страниц, и на основе некоторого logi c мы хотим отобразить соответствующий маршрут с помощью навигатора. Как мы это делаем?

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

Ответы [ 2 ]

3 голосов
/ 21 июня 2020

В виджете приложения материалов есть атрибут routes. Вы должны использовать это:

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

Перед использованием убедитесь, что у вас есть переменная stati c с именем routeName в каждом виджете.

static const routeName = '/PageOne';
0 голосов
/ 21 июня 2020

Я не совсем уверен, что понимаю вас, эмитент, но если ваш вопрос заключается в том, где / как вы можете поставить условие, есть два способа сделать это: в компоненты [0] () или компоненты [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]()
          }
      ),
    );
...