Flutter 状态管理框架对比
社区流行度
名称 | 发布日期 | GH Star | Pub Likes | Pub points | GitHub | Pub.dev |
---|---|---|---|---|---|---|
Flutter GetX | 2020 | 9k | 12728 | 120/140 | 地址 | |
Flutter Provider | 2019 | 4.9k | 8857 | 140/140 | 地址 | |
Flutter Riverpod | 2020 | 4.9k | 1858 | 140/140 | ||
Flutter BLoC | 2019 | 10k | 5842 | 140/140 | 地址 |
Provider
介绍:
- 简洁性:Provider 设计的初衷是为了提供一个更简洁、更直观的状态管理解决方案。
- 灵活性:它允许开发者在不同的层级中共享状态,而不需要进行繁琐的传递。
- 与 Flutter 集成:Provider 完美地与 Flutter 集成,使得状态的共享和更新变得更为简单。
- 响应式编程:Provider 使用
ChangeNotifier
来通知听众状态的变化,从而实现响应式编程。 - 依赖注入:Provider 还支持依赖注入,这使得测试和模块化变得更为简单。
原理:
优点:
- 简洁
缺点:
- ProviderNotFoundException 问题
- 与 BuildContext 耦合
BLoC
介绍
Flutter Bloc 是基于 bloc 设计思想模式在 Flutter 上的实现。Bloc 的全称是 "business logic",意为业务逻辑。其核心思想是尽可能地将页面 UI 与数据逻辑进行解耦,从而提高项目的可读性、可维护性和健壮性。
原理
逻辑拆分:
- UI 层 (view):只负责页面的编写,不涉及数据生成。
- 数据层 (state):用于存放数据。
- 事件层 (event):存放页面的所有事件。
- 逻辑处理层 (bloc):处理数据和事件逻辑。Bloc 在源码中进行了封装处理,因此在使用时,event 和 state 必须分开。
优点
解耦业务逻辑,代码模块化,BLoC 块可测性高,单向数据流,关注点分离。
缺点
- 学习曲线:对于初学者来说,Bloc 的概念和实现可能需要一些时间来理解和掌握。
- 代码冗余:Bloc 模式需要创建多个文件(如事件、状态、Bloc 等),这可能导致代码冗余,尤其是对于简单的功能。
- 过度工程化:对于简单的应用或功能,使用 Bloc 可能会感觉过于复杂。
本文作者:Maeiee
本文链接:Flutter 状态管理框架对比
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!