前言
2019 Google I/O 大会,google就推出Provider,成为官方推荐的状态管理方式之一,Flutter 状态管理一直是个很热门的话题,而且状态管理的库也是超级多,这确实是我们每一个做Flutter开发难以避免的一道坎,既然这么重要,我们如何去理解它,如何使用它,如何做到更好呢?接下来让我告诉你答案
主要内容
一张图告诉你,我要讲的主要内容。下面将围绕这八个方面来讲。七个理论,一个实践。
- 状态管理是什么
- 为什么需要状态管理
- 状态管理基本分类
- 状态管理的底层逻辑
- 状态管理的使用原则
- 使用成熟状态管理库的弊端
- 选择状态管理库的原则
- Provider 深入分析(学以致用)
状态管理是什么
我们知道最基本的程序是什么:
- 程序=算法+数据结构
数据是程序的中心。数据结构和算法两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。其实Flutter不就是一个程序吗,那我们面临的最底层的问题还是算法和数据结构,所以我们推导出 - Flutter=算法+数据结构
那状态管理是什么?我也用公式来表达一下,如下: - Flutter状态管理=算法+数据结构+UI绑定
瞬间秒懂有没有?来看一个代码例子:
class ThemeBloc {
final _themeStreamController = StreamController<AppTheme>();
get changeTheTheme => _themeStreamController.sink.add;
get darkThemeIsEnabled => _themeStreamController.stream;
dispose() {
_themeStreamController.close();
}
}
final bloc = ThemeBloc();
class AppTheme {
ThemeData themeData;
AppTheme(this.themeData);
}
/// 绑定到UI
StreamBuilder<AppTheme>(
initialData: AppTheme.LIGHT_THEME,
stream: bloc.darkThemeIsEnabled,
builder: (context, Asyn