Flutter如何添加路由 Bloc和Cubit路由方案
flutter项目中,除了OnGenerateRoute回调路由方案,基于flutter_bloc和bloc库不仅可以用于实现基于Bloc模式的状态管理,也可以用于实现导航路由方案。
bloc库提供了Bloc和Cubit类,用于管理业务逻辑和应用程序状态,而flutter_bloc库则提供了BlocProvider和BlocConsumer等Widget,用于与Bloc和Cubit进行集成。
接下来介绍下基于Bloc和Cubit路由方案的路由方案。
1.创建路由状态管理器
router_cubit.dart
|
|
2.BlocConsumer监听状态变化
使用BlocConsumer来监听状态变化,并执行页面导航。
|
|
3.跳转页面处理
details_page.dart
|
|
其它页面类似.
4.RouterCubit注入应用
创建提供RouterCubit的MultiBlocProvider,将RouterCubit注入整个应用程序,以便在整个应用中,可以使用RouterCubit来管理路由信息。
|
|
5.小结
基于Bloc的路由方案与基于onGenerateRoute回调路由方案相比
5.1 优点
- 1.状态管理:基于Bloc的路由方案,将导航信息存储在状态中,实现强大的状态管理和逻辑封装,减少页面之间的耦合性。
- 2.业务逻辑分离解耦:使用Bloc,将导航逻辑与界面分离,将导航信息放在状态中,减少页面之间的耦合,使得页面之间的通信更加清晰和灵活;将导航逻辑封装在Cubit中,可以更加专注于界面渲染和用户交互,而不需要处理导航逻辑。
- 3.代码复用:通过Bloc和Cubit,实现路由的共享和重用,提高代码的可维护性和可重用性。
- 4.更灵活的跳转:基于Bloc的路由方案可以更灵活地处理导航逻辑,根据不同的状态决定是否跳转到特定的页面。
5.2 不足
- 1.复杂性:与onGenerateRoute回调相比,使用Bloc的路由方案,会增加一些复杂性,需要一定的学习成本。
- 2.性能开销:Bloc的状态管理,可能带来一定的性能开销,相对于简单的路由回调,对性能可能有一定影响。
- 3.额外代码:使用Bloc的路由方案,需要编写更多的代码,处理状态管理和监听状态变化;相对于简单回调,会增加一些冗余代码。
5.3 路由方案选择
- 根据应用的复杂度、团队经验、性能要求等因素进行权衡。
- 基于Bloc的路由方案适合大型复杂应用,对简单应用,显得繁琐。
5.4 关于路由表
像前文OnGenerateRoute回调路由方案,提到的路由表,可以参考下。