在 Flutter,最具争议的话题,到目前为止,开发者最关心的问题是选择哪个状态管理选项。老实说,几乎每个状态管理解决方案都会解决这个问题。他们都有自己的细微差别,各有所长。
答案是没有最好的,只有自己最熟悉的一种,可以节省更多时间的才是最合适的。
在这里列举了 8 种顶级状态管理以及我得个人经验,你可以好好决定。
- setstate
- riverpod
- provider
- getX
- get_it
- bloc
- rxdart
- states_rebuilder
- stacked
8种状态管理
- setstate
许多人使用大型复杂架构来创建状态管理,但有时候只是在构建一个简单的应用程序。如果应用程序足够简单,则没有理由制作所有这些状态管理解决方案。只需使用
setstate
。
setstate
的伟大之处在于它很简单,并且不会让代码添加更多依赖项。如果你只有一两个状态,那么你应该使用setstate
。
- riverpod
riverpod
可以说时目前最棒的状态管理库,因为它很安全。它会在编译代码之前告诉开发者是否会遇到问题。它的作者也是 Provider 的作者,同时也是 Flutter 官方推荐的状态管理库。它具有出色的文档。一个专门介绍 riverpod 及其使用方法和许多示例的完整网站,从这里学到所有需要的东西。现在,riverpod 已经内置了 状态通知器 。因此,它为提供了一种极好的,不可变(immutable)的方式来控制状态。
- getX
getX 是为了让 Flutter 开发变得简单。这是最简单的状态管理包之一,但最重要的是它不仅仅是状态管理,但它还有很多其他额外功能,可以称其为中国作者制作的大杂烩包。其主要的三个支柱是路由管理、状态管理和依赖管理。许多 flutter 专家都对这个包的流行非常不满,称其为垃圾,因为他会阻碍开发者了解 flutter 真正的开发内容,强烈建议: 不要使用。
- provider
这是 Flutter 推荐的状态管理。它很健壮,并且已经存在了很长时间。基本上任何相关的问题都可以在 StackOverflow 种找到答案。
这是本人最喜欢的状态管理库,强烈推介。它借鉴于.net , 使用起来不要太爽。在 Flutter package 中名列前茅,超过 1800 like。
- bloc
我不是 bloc 的忠实粉丝,但是它作为老前辈,2 年前的项目大多都使用这个。
- rxdart
我仅仅用到了其中很小的功能,但是它作为状态管理先驱,很多开发者真的很喜欢使用它。这也是 Flutter 的最爱。
- states_rebuilder
在所有不同类型的状态管理中,它使用起来非常简单,我觉得它有很多 Riverpod 的功能。,通过 Riverpod 带来的一些重要功能实现了许多重大更新。非常类似于 riverpod。
对于前端开发者来说,MVVM 架构太熟悉了,我也是从前端进入 flutter 开发,钟爱 MVVM 架构。因此 stacked 基本每一个项目必用。