Вы можете попробовать использовать именованные маршруты + глобальную клавишу навигатора, у меня это работает в несколько иной ситуации.
Сначала настройте глобальную клавишу навигатора, как это:
...
class MyApp extends StatelessWidget {
static final navigatorKey = GlobalKey<NavigatorState>();
...
Затем прямо под определениемименованный менеджер маршрутов:
...
Route routes(RouteSettings settings) {
if (settings.name == "/") {
return MaterialPageRoute(
builder: (_) => HomePage(),
);
} else if (settings.name.startsWith("/details/")) {
try {
String id = settings.name.split("/")[2];
return MaterialPageRoute(
builder: (_) => DetailPage(id),
);
} catch (e) {
return MaterialPageRoute(
builder: (_) => HomePage(),
);
}
} else {
return MaterialPageRoute(
builder: (_) => HomePage(),
);
}
}
...
и добавьте вместе ключ навигации и маршруты к MaterialApp:
...
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: "/",
onGenerateRoute: routes,
title: 'MyApp',
navigatorKey: navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
...
После настройки всего этого вы можете перемещаться между домашней страницей и деталями, используяКлавиша навигатора, как это:
MyApp.navigatorKey.currentState.pushNamed("/"); // to navigate to HomePage
MyApp.navigatorKey.currentState.pushNamed("/details/1"); // to navigate to DetailPage
Надеюсь, что это работает, удачи!