Flutter State Management状态管理全面分析

本文深入探讨Flutter状态管理,包括状态管理的定义、为什么需要、基本分类(State、InheritedWidget、Notification、Stream)及其优缺点。强调了理解底层逻辑的重要性,并提出了状态管理使用原则,如局部管理优于全局、保持数据安全性等。同时,讨论了使用成熟状态管理库的弊端和选型原则,推荐初期使用Stream等基础组件,后期根据需求选择如Provider、Redux等框架。
摘要由CSDN通过智能技术生成

前言


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值