作为真实的世界的比较,刚才发生的是这样一段对话: 嘿,汽车油箱里还有多少油? 你在说什么,我们没有车。 这正是你的程序所发生的事情,你想调用一个类似_car.getGasLevel();的函数,但是 there is no car,变量_car是null。 显然,在你的程序中,它可能不是一辆车,它可能是一个列表、一个字符串或其他任何东西。
// SomeClass created
// SomeClass has a function xyz
class SomeClass {
SomeClass();
void xyz() {
print('xyz');
}
}
void main() {
// create an instance of the class
final someClass = SomeClass();
// access the xyz function
someClass.xyz();
}
2条答案
按热度按时间brgchamk1#
为什么会出现此错误?
示例
作为真实的世界的比较,刚才发生的是这样一段对话:
嘿,汽车油箱里还有多少油?
你在说什么,我们没有车。
这正是你的程序所发生的事情,你想调用一个类似
_car.getGasLevel();
的函数,但是 there is no car,变量_car
是null
。显然,在你的程序中,它可能不是一辆车,它可能是一个列表、一个字符串或其他任何东西。
技术说明
您正在尝试使用变量
null
。如果您已将其显式设置为null
,或者根本没有设置它,则默认值为null
。像任何变量一样,它可以被传递给其他函数。您得到错误的地方可能不是错误的来源。您必须从实际的
null
值到它最初来自的地方,找到问题所在和解决方案。null
可以具有不同的含义:变量没有被设置为另一个值将是null
,但有时空值被程序员故意使用来表示没有值。数据库有可空字段,JSON有缺失值。缺失信息可能确实是信息本身。例如变量bool userWantsPizzaForDinner;
可能在用户说是的时候被用于true
,false
,当用户拒绝时,它可能仍然是null
,当用户还没有选择某个东西时。这不是错误,它是故意使用的,需要相应地处理。我该如何修复它?
找到它
使用错误消息附带的堆栈跟踪来找出错误发生在哪一行。然后在该行设置断点。当程序遇到断点时,检查所有变量的值。其中一个变量是
null
,找出是哪一个。搞定它
一旦你知道了它是哪个变量,找出它是如何变成
null
的。它从哪里来的?这个值一开始就没有被设置过吗?这个值是另一个变量吗?* 那个 * 变量是如何得到它的值的。这就像一行面包屑,你可以一直跟着它走,直到你发现某个变量从来没有被设置过。或者,您可能会发现某个变量被有意设置为null
。如果是无意的,只需修复它。将它设置为您希望它具有的值。如果是有意的,那么你需要在程序中进一步处理它。也许你需要另一个if
来为这种情况做一些特殊的事情。如果有疑问,您可以询问有意将其设置为null
的人他们想实现什么。y0u0uwnf2#
只是您尝试从类访问的变量/函数不存在
将给予错误
因为类
someClass
不存在以下方法可以正常工作