flutter - 什么是NoSuchMethod错误,如何解决?

标签 flutter dart null nosuchmethod

我有一些代码,运行时会产生错误,说:

NoSuchMethod: the method 'XYZ' was called on null


这是什么意思,我该如何解决?

最佳答案

为什么会出现此错误?

作为现实世界的比较,这次对话刚刚发生:

Hey, how much gas is left in the tank of the car?


What are you talking about, we don't have a car.


这就是程序中正在发生的事情。您想调用类似_car.getGasLevel();的函数,但没有汽车,变量_carnull
显然,在您的程序中它可能不是汽车。可能是列表,字符串或其他任何东西。
技术说明
您正在尝试使用null变量。您已经将其显式设置为null,或者根本就没有设置它,默认值为null
像任何变量一样,它可以传递给其他函数。您得到错误的地方可能不是来源。您将必须遵循从实际null值到其最初来源的线索,以查找问题所在和解决方案。null可以具有不同的含义:未设置为另一个值的变量将是null,但是有时程序员有意使用null值来表示没有值。数据库具有可空字段,JSON缺少值。缺少信息的确可能是信息本身。例如,当用户说"is"时,可以将bool userWantsPizzaForDinner;变量用于true;当用户拒绝时,可以将false用于变量;而当用户尚未选择某些内容时,可以将其用作null。这不是一个错误,它是有意使用的,需要相应地处理。
我如何解决它?
找到它
使用错误消息附带的堆栈跟踪,可以准确地找出错误所在的行。然后在该行上设置一个断点。当程序到达断点时,检查变量的所有值。其中之一是null,找出哪一个。
修理它
一旦知道了它是哪个变量,就找出它最终是null的原因。它从哪里来的?该值是否从未设置过?值是另一个变量吗?该变量如何获得其值(value)。这就像一条面包屑,直到发现某个变量从未设置过,或者您发现某个变量被故意设置为null为止,您都可以遵循。如果不是故意的,请修复它。将其设置为所需的值。如果是故意的,那么您需要在程序中进一步处理它。也许您需要另一个if对这种情况做一些特殊的事情。如有疑问,您可以询问故意将其设置为null的人想要实现的目标。

关于flutter - 什么是NoSuchMethod错误,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64509700/

相关文章:

image - Flutter CircleAvatar-将Image对象用作(背景)图像/将其类型转换为ImageProvider

firebase - flutter firebase 用户在应用程序启动时登录

ios - 如果 Objective C 中的值为 NULL,则删除数组中的行

flutter - 尝试在dart(解析服务器SDK)中使用此包(flutter/dart)

android - Flutter Google Maps Android构建失败

rest - Dart URI : multiple query parameters with the same key

flutter - 我怎样才能让这个 Map 双函数忽略/跳过空值?

c - 在函数调用中传递指向 const char 的指针会将其重置为 NULL

MySQL 显示值为 NULL 或等于 X 的行

flutter 错误 : setState() called after dispose()