1
何时在Flutter中使用Provider.of <X>与Consumer <X>
我仍然在扑朔迷离地围绕状态管理技术,对何时何地使用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}'); }, ), ), ); 而在我们只需要数据的地方,不想使用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>?前者不会更新UI,后者会更新吗? 如果listen未设置为,false则默认情况下将重新构建小部件还是不重新构建?如果listen设置为true怎么办? 为什么要Provider.of选择完全重建UI的选项Consumer呢?