Существует две основные причины, по которым маршрут не может быть найден.
1) Маршрут определен ниже контекста , переданного в Navigator.of (context) - сценарий, который @rmtmackenzie объяснил
2) Маршрут определен в ветви филиала например.
Root
-> Content (Routes e.g. Home/Profile/Basket/Search)
-> Navigation (we want to dispatch from here)
Если мы хотим отправить маршрут из виджета «Навигация», мы должны знать ссылку на NavigatorState. Наличие глобальной ссылки стоит дорого, особенно когда вы собираетесь перемещать виджет по дереву. https://docs.flutter.io/flutter/widgets/GlobalKey-class.html. Используйте его только там, где нет способа получить его из Navigator.of (context).
Чтобы использовать GlobalKey внутри MaterialApp, определите navigatorKey
final navigatorKey = GlobalKey<NavigatorState>();
Widget build(BuildContext context) => MaterialApp {
navigatorKey: navigatorKey
onGenerateRoute : .....
};
Теперь в любом месте приложения, где вы передаете навигационную клавишу, вы можете теперь вызывать
navigatorKey.currentState.push(....);
Только что написал об этом https://medium.com/@swav.kulinski/flutter-navigating-off-the-charts-e118562a36a5