来自 Kotlin 背景,可以确保像这样的属性的 null 安全:
Kotlin 代码:
data class User(val name: String?, val age: Int?)
fun test(user: User) {
if(user.name != null) {
val name:String = user.name // Kotlin can ensure that name is always non null
}
}
然而令我惊讶的是,这在 Dart 中是不可能的:
builder: (context, AsyncSnapshot<List<Foo>> snapshot) {
if (snapshot.data != null) {
final List<Foo> foo = snapshot.data; //needs snapshot.data! to work
}
}
例如,我想 snapshot.data
对象可以在其他线程中设置为 null,但是如果 Kotlin 可以确保该行为,为什么 Dart 不能?