flutter_provider

2020-10-21  本文已影响0人  走停2015_iOS开发

参考文档 :

从3.0版本到4.0版本改动 确实比较大,迁移和运用的过程中,内心是奔溃的,最后中找到规律其实发现容易了很多

运用场景

1.多个weight 共用一块数据资源 可以使用provider共享出去
2.共享数据发生变化 子weight的数据也需要响应变化
`注意问题:过多的重构build 消耗性能`
image.png

解释一下上图 Model变化后会自动通知ChangeNotifierProvider(订阅者),ChangeNotifierProvider内部会重新构建InheritedWidget,而依赖该InheritedWidget的子孙Widget就会更新。

其实在实现状态管理过程中用到俩个过程

当然provider组件也提供了别的类 Consumer Selector 大致实现如下

// 这是一个便捷类,会获得当前context和指定数据类型的Provider
class Consumer<T> extends StatelessWidget {
  Consumer({
    Key key,
    @required this.builder,
    this.child,
  })  : assert(builder != null),
        super(key: key);

  final Widget child;

  final Widget Function(BuildContext context, T value) builder;

  @override
  Widget build(BuildContext context) {
    return builder(
      context,
      ChangeNotifierProvider.of<T>(context), //自动获取Model
    );
  }
}
上一篇下一篇

猜你喜欢

热点阅读