Skip to main content

状态管理方法列表

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

请访问以下链接了解更多信息,其中许多链接都由 Flutter 社区贡献:

一般概述

#

选择方法之前需要回顾的事项。

Provider

#

Riverpod

#

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

setState

#

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

ValueNotifier & InheritedNotifier

#

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

InheritedWidget & InheritedModel

#

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

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


How to manage application state using inherited widgets

其他有用的文档包括:

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 模式 (分段状态模式)

#

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 体验,通过职责清晰的代码分离、高效的重建、易于测试以及提高团队生产力来实现。