【问题标题】:NoSuchMethodError: The method 'markNeedsBuild' was called on nullNoSuchMethodError:在 null 上调用了方法“markNeedsBuild”
【发布时间】:2020-11-20 15:53:50
【问题描述】:

错误日志中出现NoSuchMethodError: The method 'markNeedsBuild' was called on null. 错误。我从来没有在调试中看到过这个错误,用户也没有报告任何问题。为什么会出现这个错误,我可以做些什么来防止它发生?

【问题讨论】:

    标签: flutter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 1970-01-01
      • 2021-11-30
      • 2021-03-11
      • 2021-09-29
      • 2021-06-18
      • 2019-12-23
      • 2021-11-15
      • 2021-07-14
      相关资源
      最近更新 更多