如何重建提供程序选择器,但不重建其子级

时间:2019-10-29 15:08:12

标签: flutter flutter-provider

我知道消费者可以通过将子小部件作为参数传递给构建器的子项来做到这一点,但是在Selector中我不知道 这是一些文档https://github.com/rrousselGit/provider#my-widget-rebuilds-too-often-what-can-i-do

2 个答案:

答案 0 :(得分:0)

避免不必要的重建的一种方法是使用提供程序包中的Selector class。在某些情况下,您只需要从ViewModel调用一个方法,而不必一定要侦听更改。您可以使用构造函数中的可选 shouldRebuild 参数来返回false。因此,选择器下的小部件永远不会重建。

代码示例:

Selector<HomeModel, HomeModel>(
      shouldRebuild: (prev, next) => false,
      selector: (_, model) => model,
      builder: (_, data, child) {
        return CurvedNavigationBar(
          backgroundColor: Theme.of(context).accentColor,
          items: <Widget>[
            Icon(Icons.list, size: 30),
            Icon(Icons.account_circle, size: 30),
          ],
          onTap: (index) {
            data.currentIndex = index;
          },
        );
      },
    );

答案 1 :(得分:0)

更新。选择器也有一个孩子。我可以像消费者一样使用它。