如何从ChangeNotifier推送路由?

问题描述

我的问题很简单:如何从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);
}}
  1. 在Model类中可在任何函数中使用

    NavigationService>().navigateTo(homePageRoute)  // your router name