【发布时间】:2021-12-05 20:43:26
【问题描述】:
我想在 networkProvider 更改时重置 userProvider。
在userProvider.reset(),我有notifyListeners。
void didChangeDependencies() async {
super.didChangeDependencies();
final NetworkProvider networkProvider = Provider.of<NetworkProvider>(context);
UserProvider userProvider = Provider.of<UserProvider>(context, listen: false);
userProvider.reset(); }
当它运行时,它给出错误“setState() or markNeedsBuild() called during build.” 我的问题是,我已将监听设置为 false,为什么它仍然重建这个小部件?
只有一个UserProvider时,报同样的错误:
void didChangeDependencies() async {
super.didChangeDependencies();
UserProvider userProvider = Provider.of<UserProvider>(context, listen: false);
userProvider.reset(); }
如果我的使用想法完全错误,有什么建议可以达到同样的效果吗?
【问题讨论】:
-
你的构建方法是什么样的?如果您只是在阅读 UserProvider(使用
listen: false),那么这段代码不是问题。 -
返回 MaterialApp(...)。是这个问题吗?