Не удалось найти генератор для маршрута "домашняя страница" в _MaterialAppState
Я получаю исключение, когда пытаюсь перейти от одного вида к другому в приложении флаттера.
I/flutter ( 2199): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter ( 2199): The following assertion was thrown while handling a gesture:
I/flutter ( 2199): Could not find a generator for route "home-page" in the _MaterialAppState.
2 ответа
Использование
Navigator.push(context, new MaterialPageRoute(
builder: (context) =>
new MyHomePage())
);
Вместо
Navigator.of(context).pushNamed('/home-page');
//or
Navigator.pushedName(context, '/home-page');
Это сообщение говорит о том, что в списке маршрутов искомый маршрут не указан. Итак, проверьте, есть ли в ваших MaterialApp-> маршрутах заданный вами маршрут.
Ошибка говорит, Could not find a generator for route "home-page" in the _MaterialAppState.
, Поскольку вы используете NamedRoute (выведенный из сообщения об ошибке), и я думаю, что проблема с настройкой маршрута. Обратитесь к примеру для настройки маршрута,
MaterialApp(
title: 'Named Routes Demo',
initialRoute: '/',
routes: { //route setting
'/': (context) => FirstScreen(),
'/home-page': (context) => HomePage(), //you should have something like this.
},
)
Попытайся
Navigator.push(context, new MaterialPageRoute(builder: (context) =>new PageName())
Вам нужно определить маршрут в конкретном файле дротика, откуда вы хотите перейти к следующему экрану. В вашем случае, например, есть три экрана: 1. mainScreen.dart 2.loginScreen.dart 3.TabScreen.dart
Теперь вы, возможно, определили маршрут для Loginscreen и TabScreen внутри mainscreen.dart, например:
routes : <String, WidgetBuilder>{
'/login' : (BuildContext context)=> LoginScreen()
'/tab' : (BuildContext context)=> TabScreen()
}
и вы пытаетесь перейти с LoginScreen на TabScreen, но вы не определили маршрут для TabScreen внутри LoginScreen.dart
Убедитесь, что вы определили маршрут для TabScreen внутри LoginScreen:
routes : <String, WidgetBuilder>{
'/tab' : (BuildContext context)=> TabScreen()
}