如果对象的字段可以为空,我无法理解如何键入提升对象的字段。假设我有以下 Comment 类并尝试访问其一个可为空的字段:
class Comment {
final String? text;
Comment(this.text);
}
void main() {
final comment = Comment("comment");
if (comment.text!= null) {
String text = comment!.text;
}
}
Dart 编译器会给我一个错误,因为我试图将一个可为空的变量分配给一个不可为空的变量。根据我从研究这个主题中收集到的信息,不可能使用实例变量进行类型提升,因为可以修改实例变量,这会破坏声音的空安全性。我已经看到在这些情况下使用了 Null 断言运算符 (!.),但它似乎不适用于字段,只能用于方法。
使用 dart null-safety,我应该如何分配一个可为空的字段,例如 String?到一个不可为空的变量(字符串)。为了同样的效果,我应该如何将一个可为空的字段传递给一个需要非空参数的函数。