Маршруты в Футтере с использованием 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"));
});
}