Flutter Bloc用于导航流程

The*_*man 11 dart flutter

我开始使用BLoC模式,但我有一个问题:

1)您是否应该使用BloC模式来确定路由是否应该更改?示例:身份验证对象更改为,unauthenticated因此侦听器应处理路由更改.

2)BLoC模式是否应仅用于UI状态并处理UI更改中的路由更改?示例:用户单击login并导航到home屏幕.

我问这个问题是因为我遇到了一个我没有中央导航管理解决方案的问题.

这段代码现在在我的BLoC中:

loggedIn.listen((AuthResponse user) {
      currentUserSubject.add(user);
      Navigator.pushReplacement(
        _context,
        PageRouteBuilder(
          pageBuilder: (context, animation1, animation2) {
            return HomePage();
          },
          transitionsBuilder: (context, animation, _, child) {
            return new SlideTransition(
              child: child,
              position: new Tween<Offset>(
                begin: const Offset(0.0, 1.0),
                end: Offset.zero,
              ).animate(animation),
            );
          },
          transitionDuration: Duration(milliseconds: 400),
        ),
      );
    }, onError: (error) {
      Scaffold.of(_context).showSnackBar(new SnackBar(
        content: new Text(error.message),
      ));
    });
Run Code Online (Sandbox Code Playgroud)

Tru*_*inh 1

我看到那里有 2 个是/否问题(与 W/H 问题相反),我对这两个问题的回答都是肯定的。原因是,使用 BloC 和导航,如果应用程序崩溃,您实际上可以恢复当前屏幕(自动保存状态和状态恢复必须到位,但这是另一个 W/H 问题),以及 BLoC/event 的其他不错的功能基于状态管理(历史快照、时间机器、事件重放、关注点分离、可测试性等)

我问这个问题是因为我面临着没有中央导航管理解决方案的问题。

关于您的问题,有什么我可以帮忙的吗?