首页 > 解决方案 > NoSuchMethodError:在 null 上调用了方法“markNeedsBuild”

问题描述

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;
        });
    }
});

推荐阅读