Flutter 状态管理 入门

480 阅读1分钟
  1. 临时状态 与 应用状态

    1. 原文地址: flutter.dev/docs/develo…
    2. 临时状态(非通用状态)无需特殊管理, 在 StatefulWidget 的 State 里定义即可
    3. 应用状态(需要全局共享的状态: 用户设置, 登录信息, 购物车等)
    4. 没有清晰的规则来界定临时状态和应用状态, 依需求而定
      1. 数据
        1. 单个组件应用 -- 临时状态
        2. 多个组件, 或者大多数组件需要 -- 应用状态
    5. "第一原则": 极简主义, 顺势而为("The rule of thumb is: Do whatever is less awkward.")
    6. 总结:
      1. 临时状态 可以通过 StateSetState() 实现, 通常是单一组件的局部状态.
      2. 其他的状态就是 应用状态.
      3. 在 FLutter 应用中, 两者无特殊规则界定, 依据个人设置及应用复杂程度来选择.
  2. 简单应用状态管理(provider 实践)

    1. 原文地址: flutter.dev/docs/develo…
    2. 状态前置(状态上调)
    3. 组件不改变, 只是被替换
    4. provider 相关概念:
      1. ChangeNotifier
        1. 组件继承自 ChangeNotifier, 在需要更新UI的地方调用 notifyListeners()
      2. ChangeNotifierProvider
        1. 为子组件提供 ChangeNotifier 的实例, 在需要获取它的组件的父组件中定义
        2. ChangeNotifierProvider 应该被定义在必要的地方, 不能高于必要的父组件
        3. 可以通过 MultiProvider 定义多个 provider
      3. Consumer
        1. 通过 Consumer<> 组件的 builder: (context, cart, child){} 方法来更新UI
        2. 每次调用notifyListeners(), 所有对应 Consumer 组件的 builder方法都会被调用
        3. Consumer 组件应该尽量在底层调用, 以避免不必要的UI更新
      4. Provider.of
        1. 在不需要更新UI的时候, 可以通过Provider.of<>(context, listen: false).method();实现组件方法调用
      5. github: github.com/flutter/sam…
      6. provider 文档: pub.dev/documentati…

状态管理方式: flutter.dev/docs/develo…

Flutter Providers 解析: medium.com/flutter-com…

基于 Provider 的 Flutter 架构: www.filledstacks.com/post/flutte…