flutter中类的构造函数中需要添加‘required’吗?

问题描述 投票:0回答:1
class Quote {
  String text;
  String author;

  Quote({ this.text, this.author });
}

在 vscode 中,如果没有 required,它会显示错误并强制我在构造函数中在 this.text 之前添加 required

class Quote {
  String text;
  String author;

  Quote({ required this.text, required this.author });
}

这就是副驾驶建议我这样做的答案?但我很困惑为什么我需要在 this.text 之前添加 required ???

flutter dart class
1个回答
0
投票

如果您希望在调用此类时必须给出值,则应将这些变量标记为必需,为此,您可以直接创建一个变量并需要它,如下所示。

class Quote {
  String text;
  String author;

  Quote({required this.Text, required this.Author });
}

但是如果您知道在调用此类时不需要传递该值,则可以将其设置为可为空,在使其可为空的同时,您可以为其指定一个默认值,或者只是使用

?

将其标记为可为空
class Quote {
  String? text;
  String? author = 'xyz';

  Quote({this.Text, this. Author });
}

现在您可以在传递或不传递任何值的情况下调用此类,但您应该记住,由于

text
变量可以为 null 并且它也没有任何默认值,因此如果您没有将值传递给text 并尝试使用它的值,它会抛出错误,要克服这个问题,您可以使用空检查运算符
??

Quote myQuote = Quote();
print(myQuote.text);

现在,由于我既没有将值传递给文本,也没有任何默认值,所以它会导致错误,要克服这个问题,你可以这样做,

print(myQuote.text ?? 'Text is empty');

现在,如果文本值不为空,则将打印

myQuote.text
值,否则将打印
'Text is empty'

© www.soinside.com 2019 - 2024. All rights reserved.