Flutter Getx:obs 变量的初始值设置为 null
Flutter Getx: initial value of obs variable set to null
现在我总是像这样使用 getx observable 声明:
var someString = ''.obs;
var someNumber = 0.obs;
等等...
但是,如果某些变量一开始没有初始值,而我实际上希望它们为空,然后再更改它们怎么办?
对于非 null 安全(Dart 2.12 之前),您可以像这样声明您的可观察变量:
final someVariable = Rx<Type>();
例如:
final someString = Rx<String>();
final someNumber = Rx<int>();
为了空安全(Dart 2.12 或更高版本),只需使用 Rxn<Type>
而不是 Rx<Type>
。
例如:
final someString = Rxn<String>();
final someNumber = Rxn<int>();
如果你的[Rx]值没有初始值(第一次),你需要使用
final Rx<YourObject?> yourObject = (null as YourObject?).obs;
或者为了更好地组织您的代码,您可以创建一个单独的 class,就像这样
class RxNullable<T> {
Rx<T> setNull() => (null as T).obs;
}
并使用:
final Rx<YourObject?> yourObject = RxNullable<YourObject?>().setNull()
如果其他人遇到这个问题。
final Rx<YourObject?> yourObject = (null as YourObject?).obs;
会起作用。
但如果有任何消息显示“不必要的强制转换。尝试删除强制转换。”,只需添加此评论
// ignore: unnecessary_cast
上一行,然后保存。
现在我总是像这样使用 getx observable 声明:
var someString = ''.obs;
var someNumber = 0.obs;
等等...
但是,如果某些变量一开始没有初始值,而我实际上希望它们为空,然后再更改它们怎么办?
对于非 null 安全(Dart 2.12 之前),您可以像这样声明您的可观察变量:
final someVariable = Rx<Type>();
例如:
final someString = Rx<String>();
final someNumber = Rx<int>();
为了空安全(Dart 2.12 或更高版本),只需使用 Rxn<Type>
而不是 Rx<Type>
。
例如:
final someString = Rxn<String>();
final someNumber = Rxn<int>();
如果你的[Rx]值没有初始值(第一次),你需要使用
final Rx<YourObject?> yourObject = (null as YourObject?).obs;
或者为了更好地组织您的代码,您可以创建一个单独的 class,就像这样
class RxNullable<T> {
Rx<T> setNull() => (null as T).obs;
}
并使用:
final Rx<YourObject?> yourObject = RxNullable<YourObject?>().setNull()
如果其他人遇到这个问题。
final Rx<YourObject?> yourObject = (null as YourObject?).obs;
会起作用。
但如果有任何消息显示“不必要的强制转换。尝试删除强制转换。”,只需添加此评论
// ignore: unnecessary_cast
上一行,然后保存。