flutter_provider

參考文檔 :

從3.0版本到4.0版本改動 確實比較大,遷移和運用的過程中,內心是奔潰的,最后中找到規律其實發現容易了很多

運用場景

1.多個weight 共用一塊數據資源 可以使用provider共享出去
2.共享數據發生變化 子weight的數據也需要響應變化
`注意問題:過多的重構build 消耗性能`
image.png

解釋一下上圖 Model變化后會自動通知ChangeNotifierProvider(訂閱者),ChangeNotifierProvider內部會重新構建InheritedWidget,而依賴該InheritedWidget的子孫Widget就會更新。

其實在實現狀態管理過程中用到倆個過程

  • InheritedWidget

  • ChangeNotifier

當然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
    );
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。