flutter - NoSuchMethodError:在 null 上调用了方法“markNeedsBuild”
问题描述
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;
});
});
为避免在释放后更新小部件,请在调用之前检查以确保小部件仍然存在setState
。这是上面示例的更新版本,可防止NoSuchMethodError
.
await networkProvider.getData().then((value) {
// Check if widget still exists.
if (mounted) {
// Update data.
setState(() {
data = value;
});
}
});
推荐阅读
- javascript - 为什么我在 safari 和 chrome 中使用 JSON.stringify 对 json 进行字符串化得到不同的结果?
- php - Laravel 在一个控制器中导航到多个页面
- angular - Angular7不显示承诺数据,但如果我硬刷新浏览器,它会显示
- java - 列出 JAR 资源文件夹中所有子目录的名称
- firebase - Firebase如何在自定义孩子上应用更新角色
- c++ - 尝试使用 std::thread 时出现编译器错误
- operating-system - 解释语言是否需要操作系统才能工作?
- jquery - Cakephp 3.6:通过 ajax 提交表单
- postgresql - NextVal of postgresql 使用情况
- android - 一键多事