【问题标题】:Is Bloc pattern appropriate to manage navigation in a Flutter app?Bloc 模式是否适合在 Flutter 应用中管理导航?
【发布时间】:2020-08-13 16:52:57
【问题描述】:

我在问 bloc_flutter(flutter 的 Bloc 模式实现)是否是管理应用“导航”的正确解决方案。

我使用 bloc_flutter 来管理 firebase 登录 https://github.com/felangel/bloc/tree/master/examples/flutter_firebase_login。

用户成功登录后,他会进入带有菜单的“欢迎屏幕”。我尝试使用新的 bloc 模式管理此菜单的屏幕导航,但这对我来说似乎是一个压倒性的解决方案。 此外,使用带 bloc 模式的导航不会让您使用 Android 的“后退按钮”。

那么,在您看来,使用路线导航并让 bloc 管理每个屏幕的逻辑会更好吗?

【问题讨论】:

    标签: flutter navigation bloc


    【解决方案1】:

    我将GlobalKey<NavigatorState> 传递给 bloc 并且可以从那里执行导航:

      @override
      Stream<MyScreenState> mapEventToState(
        MyScreenEvent event,
      ) async* {
        if (event is SomeEvent) {
          _navigatorKey.currentState.push(...);
        }
      }
    

    请注意,此密钥需要在 MaterialApp 实例化上使用才能正常工作:

    MaterialApp(
      navigatorKey: _navigatorKey,
      ...
    );
    

    【讨论】:

    • 感谢您的回复。但问题是:使用 BloC 进行导航是否值得?
    【解决方案2】:

    不,不是。如果您希望您的应用程序具有良好的架构,则不应使用 bloc 来处理导航,因为导航与应用程序的业务逻辑无关,它是 UI 的一部分。

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 2019-08-04
      • 2020-05-06
      • 2019-06-13
      • 2019-11-20
      • 2021-03-04
      • 2019-07-05
      • 2020-02-28
      • 2019-02-07
      相关资源
      最近更新 更多