相关疑难解决方法(0)

何时在 Flutter 中使用 Provider.of<X> 与 Consumer<X>

我仍然在关注 flutter 中的状态管理技术,并且对何时以及为什么使用Provider.of<X>vs. Consumer<X>. 我从文档中了解到(我认为)在这两者之间进行选择时,当我们想要访问数据时,您将使用 Provider.of,但您不需要更改 UI。因此,以下(取自文档)可以访问数据并在新事件上更新 UI:

return HumongousWidget(
  // ...
  child: AnotherMonstrousWidget(// <- This widget will rebuild on new data events
    // ...
    child: Consumer<CartModel>(
      builder: (context, cart, child) {
        return Text('Total price: ${cart.totalPrice}');
      },
    ),
  ),
);
Run Code Online (Sandbox Code Playgroud)

然而,在这里我们只需要在数据上不希望与UI重建,我们会使用Provider.of<X>listen参数集false,如下图所示:

Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild
Run Code Online (Sandbox Code Playgroud)

但是,listen不是必需的,因此以下内容也将运行:

Provider.of<CartModel>(context).add(item); \\listener optional
Run Code Online (Sandbox Code Playgroud)

所以这给我带来了几个问题:

  1. 这是区分Provider.of<X>和的正确方法吗Consumer<X>?前者不更新用户界面,后者呢?
  2. 如果listen未设置为false默认情况下会重建小部件还是不重建?如果listen设置为true呢?
  3. 为什么 …

dart flutter flutter-provider

55
推荐指数
6
解决办法
3万
查看次数

标签 统计

dart ×1

flutter ×1

flutter-provider ×1