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

上一行,然后保存。