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

通过以下链接了解更多信息,其中许多链接都是由 Flutter 社区贡献的

概述

#

选择方法前需要回顾的内容。

Provider

#

Riverpod

#

Riverpod 的工作方式与 Provider 类似。它提供编译安全性和测试,而不依赖于 Flutter SDK。

setState

#

用于小部件特定、临时状态的低级方法。

ValueNotifier 与 InheritedNotifier

#

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

InheritedWidget 与 InheritedModel

#

用于在小部件树中祖先和子项之间进行通信的低级方法。这是 provider 和许多其他方法在底层使用的方法。

以下由讲师指导的视频工作坊介绍了如何使用 InheritedWidget

在新标签页中在 YouTube 上观看:“如何使用继承小部件管理应用程序状态”

其他有用的文档包括

June

#

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

Redux

#

一种许多 Web 开发者熟悉的状态容器方法。

Fish-Redux

#

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

BLoC / Rx

#

一系列基于流/可观测对象的模式。

GetIt

#

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

MobX

#

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

Dart Board

#

一个用于 Flutter 的模块化特性管理框架。Dart Board 旨在帮助封装和隔离特性,包括示例/框架、小型内核以及许多即用型解耦特性,如调试、日志记录、身份验证、redux、定位器、粒子系统等。

Flutter Commands

#

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

Binder

#

一个以 InheritedWidget 为核心的状态管理包。部分灵感来源于 Recoil。该包提倡关注点分离。

GetX

#

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

states_rebuilder

#

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

Triple Pattern(分段状态模式)

#

Triple 是一种使用 StreamsValueNotifier 进行状态管理的模式。这种机制(因流始终使用三个值:ErrorLoadingState 而被称为triple)基于分段状态模式

更多信息请参考以下资源

solidart

#

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

flutter_reactive_value

#

flutter_reactive_value 库可能提供了 Flutter 中最简单的状态管理解决方案。它可以帮助 Flutter 新手为他们的 UI 添加响应性,而无需复杂的前述机制。flutter_reactive_value 库在 ValueNotifier 上定义了 reactiveValue(BuildContext) 扩展方法。此扩展允许 Widget 获取 ValueNotifier 的当前值,并将 Widget 订阅到 ValueNotifier 值中的更改。如果 ValueNotifier 的值发生变化,Widget 会重建。

Elementary

#

Elementary 是一种在 Flutter 中使用 MVVM 构建应用程序的简单可靠方式。它提供纯粹的 Flutter 体验,具有清晰的代码职责分离、高效的重建、易于测试以及提高团队生产力等优点。