Как протолкнуть маршрут из 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);
}}
  1. в классе модели используйте это в любой функции

    NavigationService>().navigateTo(homePageRoute)  // your router name
    
Другие вопросы по тегам