【发布时间】:2021-08-12 17:50:49
【问题描述】:
以下代码编译时不具备可靠的 null 安全性,因为可以将 null 传递给初始化非可空字段 myString 的构造函数。
class MyClass {
String myString;
MyClass({@required this.myString});
}
我希望在 this.myString 之后添加一个问号可以解决问题,但它并没有并且显示另一个编译错误。
默认值对我来说不是选项,似乎唯一的其他解决方案是这样的:
class MyClass {
late String myString;
MyClass({@required myString}) {
this.myString = myString;
}
}
如果有很多参数,这会降低可读性。是否有更方便的解决方案支持在命名构造函数中使用 this. 进行初始化?
【问题讨论】:
-
使用新关键字“required”而不是“@required”。它记录在这里:dart.dev/null-safety/…
-
没有别的办法。如果您检查任何 Flutter 小部件的内部代码,您会发现相同的模式。但是是的
required而不是@required -
@NisanthReddy “没有其他办法”是什么意思?如果他只是将
@required替换为required,他的第一个示例就可以正常工作。 -
@julemand101 我的意思是除了用他提到的那个,没有别的办法
标签: flutter dart dart-null-safety