Flutter获取:obs变量的初始值设置为空

ppcbkaq5  于 2023-02-05  发布在  Flutter
关注(0)|答案(4)|浏览(264)

从现在起,我总是使用这样的getx可观察声明:

var someString = ''.obs;
var someNumber = 0.obs;

等等...
但是如果有些变量一开始没有初始值,而我实际上希望它们为null,然后再修改它们,那该怎么办?

1hdlvixo

1hdlvixo1#

对于非空安全(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>();
wqlqzqxt

wqlqzqxt2#

如果您没有[Rx]值的初始值(第一次),则需要使用

final Rx<YourObject?> yourObject = (null as YourObject?).obs;

或者为了更好地组织代码,可以创建一个单独的类,如下所示

class RxNullable<T> {
  Rx<T> setNull() => (null as T).obs;
}

并使用:

final Rx<YourObject?> yourObject = RxNullable<YourObject?>().setNull()
irlmq6kh

irlmq6kh3#

如果其他人真的面临这个问题。

final Rx<YourObject?> yourObject = (null as YourObject?).obs;

会起作用。
但是如果有任何消息说"不必要的强制转换。尝试删除强制转换。",只需添加此注解

// ignore: unnecessary_cast

然后保存。

68de4m5k

68de4m5k4#

您可以如下声明可观察变量(dart 2.18及以上版本):

    • 接收变量名称=(T()). obs;**

相关问题