一个NoSuchMethodError: The method 'markNeedsBuild' was called on null.出现在错误日志错误。我从来没有在调试中看到过这个错误,用户也没有报告任何问题。为什么会发生此错误,我可以做些什么来防止它发生?
'NoSuchMethodError: The method 'markNeedsBuild' was called on null.'是由setState()在处理小部件后调用引起的。
最常见的是,当异步网络操作完成并尝试更新小部件但小部件已经被释放时,就会发生这种情况。
例子:
await networkProvider.getData().then((value) {
// Update data.
setState(() {
data = value;
});
});
Run Code Online (Sandbox Code Playgroud)
为避免在处理后更新小部件,请在调用 之前检查以确保小部件仍然存在setState。这是上面示例的更新版本,可以防止NoSuchMethodError.
await networkProvider.getData().then((value) {
// Check if widget still exists.
if (mounted) {
// Update data.
setState(() {
data = value;
});
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |