gpt4 book ai didi

flutter - 何时在 Flutter 中使用 Provider.of 与 Consumer

转载 作者:行者123 更新时间:2023-12-03 02:38:30 26 4
gpt4 key购买 nike

我仍然对 Flutter 中的状态管理技术感到困惑,并且对何时以及为何使用 Provider.of<X> 感到有些困惑。对比 Consumer<X> .我理解(我认为)来自 documentation在这两者之间进行选择时,当我们想要访问数据时,您将使用 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}');
},
),
),
);

而在我们只需要数据不想用 UI 重建的情况下,我们会使用 Provider.of<X>listen参数设置为 false , 如下:
Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild

然而, listen不是必需的,因此以下也将运行:
Provider.of<CartModel>(context).add(item); \\listener optional

所以这给我带来了几个问题:
  • 这是区分的正确方法Provider.of<X>Consumer<X> .前者不更新用户界面,后者呢?
  • listen未设置为 false默认情况下会重建小部件还是不重建?如果listen怎么办设置为 true ?
  • 为什么有 Provider.of当我们有 Consumer 时,可以选择重建 UI ?
  • 最佳答案

    没关系。但是要快速解释一下:
    Provider.of只有获取和收听对象的方法。Consumer , Selector ,以及所有 *ProxyProvider 调用 Provider.of上类。
    Provider.of对比 Consumer是个人喜好的问题。但两者都有一些论据

    Provider.of

  • 可以在所有小部件生命周期中调用,包括点击处理程序和 didChangeDependencies
  • 不增加缩进

  • 消费者
  • 允许更细粒度的小部件重建
  • 解决了大多数 BuildContext 滥用
  • 关于flutter - 何时在 Flutter 中使用 Provider.of<X> 与 Consumer<X>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774301/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com