小编Mic*_*len的帖子

flutter:等待导航转换结束

我有一个特殊的用例,现在让我头疼了好几个小时。

我确实有一个使用 firebase 和社交登录进行身份验证的应用程序。此外,我还实现了 redux 来管理应用程序状态。

一切都像这样工作正常,但只有当我尝试在需要类数据的屏幕上注销时,FirebaseUser渲染才会失败,因为导航器的转换仍在运行(触发我正在导航的屏幕的重新渲染) )并最终到达所需的位置,但在转换时屏幕出现故障。

我的中间件代码是这样的:

Middleware<RootState> _signOutUser(GlobalKey navigatorKey) {
  return (Store<RootState> store, dynamic dynamicAction, NextDispatcher next) {
    final SignOut action = dynamicAction;
    final NavigatorState nav = navigatorKey.currentState;

    next(action);

    store.dispatch(AppIsLoading());

    Future<dynamic>(() async {
      try {
        await auth.signOut();
      } on PlatformException catch (error) {
        return Future<void>.error(error);
      }
    }).then<void>((dynamic _) {
      nav.pushNamedAndRemoveUntil(Routes.home, (Route<dynamic> route) => false);
      store.dispatch(UnsetUser());
      store.dispatch(AppIsLoaded());
      action.completer.complete();
    }).catchError((Object response) {
      nav.maybePop(nav.context);
      action.completer.completeError(response);
      store.dispatch(AppIsLoaded());
    });
  };
}
Run Code Online (Sandbox Code Playgroud)

理想情况下我会这样做:

Middleware<RootState> _signOutUser(GlobalKey navigatorKey) {
  return (Store<RootState> store, dynamic …
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
1
解决办法
4046
查看次数

标签 统计

dart ×1

flutter ×1