Как протолкнуть маршрут из ChangeNotifier?
У меня довольно простой вопрос: как начать навигацию из ChangeNotifier? У меня есть настройка панели управления с потребителем, и я хочу изменить маршрут в зависимости от результата определенных операций в модели ChangeNotifier.
Подобный вопрос задавался и раньше, но он остался без ответа: как переходить из ChangeNotifier?
2 ответа
Что ж, это может показаться очевидным для всех, кроме меня. Вам просто нужно передать контекст в 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);
}}
в классе модели используйте это в любой функции
NavigationService>().navigateTo(homePageRoute) // your router name