Sur*_*gch 8 flutter flutter-provider riverpod
在 Riverpod文档中,它说:
这
context.read(myProvider)就是解决方案的地方。使用它,我们可以将之前的代码重构为:
Run Code Online (Sandbox Code Playgroud)@override Widget build(BuildContext context) { return RaisedButton( onPressed: () => context.read(counterProvider).state++, child: Text('increment'), ); }通过这样做,点击我们的按钮仍然会增加计数器。但是我们不再听取提供者的意见,这避免了不必要的重建。
但后来它说:
警告
避免
context.read在buildWidget的方法内部调用。如果要优化重建,请提取在 Provider 中侦听的值。
这让我有点困惑。首先,文档给出了context.read在build方法内部使用的示例,然后给出了避免它的警告。为什么?
该build方法可以在布局期间多次调用。因此你应该避免在其中做任何额外的工作(比如在你的模型上调用一个方法)。
但是,当被调用时,实际上并没有调用的onPressed回调。仅在用户按下按钮时调用。只有这样,Riverpod 才会读取您的提供者并调用模型上的方法。所以文档中的警告不适用于这种情况。RaisedButtonbuildonPressed
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |