【发布时间】:2020-11-20 15:53:50
【问题描述】:
错误日志中出现NoSuchMethodError: The method 'markNeedsBuild' was called on null. 错误。我从来没有在调试中看到过这个错误,用户也没有报告任何问题。为什么会出现这个错误,我可以做些什么来防止它发生?
【问题讨论】:
标签: flutter
错误日志中出现NoSuchMethodError: The method 'markNeedsBuild' was called on null. 错误。我从来没有在调试中看到过这个错误,用户也没有报告任何问题。为什么会出现这个错误,我可以做些什么来防止它发生?
【问题讨论】:
标签: flutter
'NoSuchMethodError: The method 'markNeedsBuild' was called on null.' 是在一个小部件被释放后调用setState() 引起的。
最常见的情况是,当异步网络操作完成并尝试更新小部件但小部件已被释放时,就会发生这种情况。
例子:
await networkProvider.getData().then((value) {
// Update data.
setState(() {
data = value;
});
});
为避免在释放后更新小部件,请在调用setState 之前检查以确保小部件仍然存在。这是上面示例的更新版本,它阻止了NoSuchMethodError。
await networkProvider.getData().then((value) {
// Check if widget still exists.
if (mounted) {
// Update data.
setState(() {
data = value;
});
}
});
【讨论】: