Настройки маршрута от навигатора к флаттеру MaterialApp - PullRequest
0 голосов
/ 03 марта 2019

есть ли какой-нибудь способ получить доступ из класса Navigator (super ... super child) к MaterialApp?

child: Navigator(
              onGenerateRoute: (RouteSettings settings){
                print('settings ${settings.name}');
                if(settings.name == '/'){
                  return MaterialPageRoute(
                      builder: (_) => _page(index),
                      settings: settings
                  );
                }
                else if(settings.name == '/blog_details'){
                  return CustomRoute<bool>(
                    builder: (BuildContext context) => BlogDetailsPage(widget.model)
                  );
                }
              },
            ),

сверху вниз и выше

child: MaterialApp(
          debugShowCheckedModeBanner: false,
          theme: getAdaptiveThemeData(context),
          routes: { /// some routes///}
          onGenerateRoute: (RouteSettings settings){
            if(settings.name == '/blog_details'){
              return CustomRoute<bool>(
                builder: (BuildContext context) => BlogDetailsPage(_model)
              );
            }
          },

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете получить доступ к навигатору MaterialApp с помощью rootNavigator: true ,

FlatButton(
   child: Text('Push App Route'),
   onPressed: () {
     Navigator.of(context, rootNavigator: true)
         .pushNamed('/blog_details');
   },
)
...