Маршруты в Футтере с использованием Redux

Где лучше всего управлять маршрутами в приложении Flutter, когда мы используем Redux? Потому что я следую некоторым примерам, и некоторые из них маршрутизируются в действиях, а другие - в промежуточном программном обеспечении и даже в контейнерах.

Спасибо

0 ответов

Вы можете отправлять обычные действия для запуска навигации.

class NavigationService {

 static NavigationService _service;

 NavigationService.__internal();

  factory NavigationService.instance(){
     if(_service == null){
     _service = new NavigationService.__internal();
   }
 return _service;
}

final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>();

Future<dynamic> pushNamed(String routeName, {dynamic arguments}) {
  return _navigatorKey.currentState.pushNamed(routeName, arguments:arguments);
}

bool pop() {
    return _navigatorKey.currentState.pop();
}

GlobalKey<NavigatorState> get navigatorKey => this._navigatorKey;
}

RouteMiddleware берет на себя все действия, связанные с маршрутизацией

class RouteMiddleware<Action> extends TypedMiddleware<AppState, Action> {
  RouteMiddleware() : super(null);

  @override
  void call(Store<AppState> store, action, next) {
    if(action is YourRoutingAction){
      NavigationService.getInstance().pushedNamed(action.pageName);
    }
    next(action);
   }
}

Распределите действия, связанные с маршрутизацией, как обычные действия

goToHomePageAfterDataLoad(store) {
   dataLoadLoadLogic().then((data){
   store.dispatch(RoutingAction(pageName: "HOME"));
  });
}
Другие вопросы по тегам