错误日志中出现NoSuchMethodError: The method 'markNeedsBuild' was called on null.
错误。我从未在调试中看到此错误,并且用户未报告任何问题。为什么会发生此错误,我有什么办法可以防止它发生?
答案 0 :(得分:3)
'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;
});
}
});