从现在起,我总是使用这样的getx可观察声明:
var someString = ''.obs; var someNumber = 0.obs;
等等...但是如果有些变量一开始没有初始值,而我实际上希望它们为null,然后再修改它们,那该怎么办?
1hdlvixo1#
对于非空安全(Dart 2.12之前),可以如下声明可观察变量:
final someVariable = Rx<Type>();
例如:
final someString = Rx<String>(); final someNumber = Rx<int>();
对于零安全(Dart 2.12或更高版本),只需使用Rxn<Type>而不是Rx<Type>。例如:
Rxn<Type>
Rx<Type>
final someString = Rxn<String>(); final someNumber = Rxn<int>();
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()
irlmq6kh3#
如果其他人真的面临这个问题。
会起作用。但是如果有任何消息说"不必要的强制转换。尝试删除强制转换。",只需添加此注解
// ignore: unnecessary_cast
然后保存。
68de4m5k4#
您可以如下声明可观察变量(dart 2.18及以上版本):
4条答案
按热度按时间1hdlvixo1#
对于非空安全(Dart 2.12之前),可以如下声明可观察变量:
例如:
对于零安全(Dart 2.12或更高版本),只需使用
Rxn<Type>
而不是Rx<Type>
。例如:
wqlqzqxt2#
如果您没有[Rx]值的初始值(第一次),则需要使用
或者为了更好地组织代码,可以创建一个单独的类,如下所示
并使用:
irlmq6kh3#
如果其他人真的面临这个问题。
会起作用。
但是如果有任何消息说"不必要的强制转换。尝试删除强制转换。",只需添加此注解
然后保存。
68de4m5k4#
您可以如下声明可观察变量(dart 2.18及以上版本):