我尝试创建一个类和对象但是我得到的错误是
Error: Field 'questionText' should be initialized because its type 'String' doesn't allow null.
String questionText;
Error: Field 'questionAnswer' should be initialized because its type 'bool' doesn't allow null.
bool questionAnswer;
class Question{
String questionText;
bool questionAnswer;
Question({String q, bool a}){
questionText = q;
questionAnswer= a;
}
}
3条答案
按热度按时间iszxjhcz1#
在dart中引入空值安全后,初始化规则更加严格。参见未初始化变量:
示例字段必须要么在声明中有一个初始化器,要么使用一个初始化形式,要么在构造函数的初始化列表中初始化。这是很多术语。下面是一些例子:
在您的情况下,您使用的是命名参数,因此您还需要将它们标记为必需的(或者使用位置参数)
初始化形参和命名参数的替代方法:(注意类字段和命名参数需要具有相同的名称)
vsikbqxv2#
最重要的是,如果你使用命名参数,不写“required”就意味着参数是可选的。而且你不能将String?(String或null)类型的变量赋给String类型的变量。这就是为什么你不能将“q”赋给“questionText”。
您可以将属性设置为可选:
或者,您可以将参数设置为必需:
一个更简单的方法是这样的:
czq61nw13#
这是Flutter课程中FlutterQuizzler任务的问题,
错误:必须初始化不可为null的示例字段“questionAnswer”。必须初始化不可为null的示例字段“questionText”。
original format - see img
要解决这个问题,你只需要重新格式化构造函数:
reformatted constructor
您可能需要添加'required',因为值不能为空。