状态管理方法列表

状态管理是一个复杂的话题。如果你觉得你的某些问题没有得到解答,或者这些页面中描述的方法不适用于你的用例,你可能是对的。

在以下链接中了解更多信息,其中许多信息是由 Flutter 社区提供的

概览

在选择方法之前需要查看的内容。

提供者

Riverpod

Riverpod 的工作方式与 Provider 类似。它提供编译安全性并进行测试,而无需依赖 Flutter SDK。

setState

用于特定于小部件的短暂状态的低级方法。

ValueNotifier 和 InheritedNotifier

仅使用 Flutter 提供的工具来更新状态并通知 UI 更改的方法。

InheritedWidget 和 InheritedModel

在小组件树中祖先和小组件之间进行通信所使用的底层方法。这是 provider 和许多其他方法在底层使用的方法。

以下由讲师指导的视频讲习班介绍了如何使用 InheritedWidget

其他有用的文档包括

六月

一个轻量级且现代的状态管理库,专注于提供与 Flutter 内置状态管理类似的模式。

Redux

许多 Web 开发人员都熟悉的状态容器方法。

Fish-Redux

Fish Redux 是一个基于 Redux 状态管理的 Flutter 应用程序框架。它适用于构建中大型应用程序。

BLoC / Rx

基于流/可观察模式的一系列模式。

GetIt

一种基于服务定位器的状态管理方法,不需要 BuildContext

MobX

一个基于可观察对象和反应的流行库。

Flutter Commands

响应式状态管理,它使用命令模式并基于 ValueNotifiers。最适合与 GetIt 结合使用,但也可以与 Provider 或其他定位器一起使用。

Binder

一个状态管理包,其核心使用 InheritedWidget。部分灵感来自 recoil。此包促进了关注点的分离。

GetX

一个简化的响应式状态管理解决方案。

states_rebuilder

一种将状态管理与依赖注入解决方案和集成路由器相结合的方法。有关更多信息,请参阅以下信息

三重模式(分段状态模式)

Triple 是一种状态管理模式,它使用 StreamsValueNotifier。此机制(昵称“triple”,因为流始终使用三个值:ErrorLoadingState)基于 分段状态模式

有关更多信息,请参阅以下资源

solidart

一个简单但功能强大的状态管理解决方案,灵感来自 SolidJS。

flutter_reactive_value

flutter_reactive_value 库可能是 Flutter 中最简单的状态管理解决方案。对于 Flutter 新手来说,它可能有助于为其 UI 添加响应性,而无需之前描述的机制的复杂性。flutter_reactive_value 库定义了 ValueNotifier 上的 reactiveValue(BuildContext) 扩展方法。此扩展允许 Widget 获取 ValueNotifier 的当前值,并将 Widget 订阅到 ValueNotifier 的值更改。如果 ValueNotifier 的值发生更改,则 Widget 将重新生成。