问题描述
我的问题很简单:如何从ChangeNotifier启动导航? 我有一个与使用者一起使用的仪表板设置,我想根据ChangeNotifier模型中某些操作的结果来更改路线。
之前也曾提出过类似的问题,但尚未得到解答:How to Navigate from ChangeNotifier?
解决方法
对我来说,这似乎对所有人都显而易见。您只需要将上下文传递到ChangeNotifier中即可,然后Navigator.pushNamed(context,routeName);
我正在寻找一种方法,可以从适当的小部件树中实现这一目标。我不是只从模型中进行操作-我仍然不确定这是最佳做法-但它有效。
,1. main.dart
MaterialApp(
navigatorKey: NavigationService().navigatorKey,)
2创建新课程
class NavigationService {
final GlobalKey<NavigatorState> navigatorKey =
new GlobalKey<NavigatorState>();
GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
Future<dynamic> navigateTo(String routeName) {
return navigatorKey.currentState.pushNamed(routeName);
}}
-
在Model类中可在任何函数中使用
NavigationService>().navigateTo(homePageRoute) // your router name