Не удалось найти генератор для маршрута "домашняя страница" в _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()
}
Другие вопросы по тегам