dart Flutter< Type>的GetX状态管理库中的Rx{Type} vs Rx vs .obs

k10s72fa  于 2023-05-11  发布在  Flutter
关注(0)|答案(1)|浏览(204)

根据文件:
你有三种方法可以将一个变量变成一个“可观察的”。
1.第一个是使用Rx{Type}

// initial value is recommended, but not mandatory
final name = RxString('');
...

1.第二种是使用Rx和使用Darts Generics,Rx<Type>

final name = Rx<String>('');
...

// Custom classes - it can be any class, literally
final user = Rx<User>();

1.第三种更实用、更简单、更受欢迎的方法是,将.obs添加为value的属性:

final name = ''.obs;
...

我如何决定在何种情况下应该采用何种方法来使用可观察量?
它们是否都导致完全相同的行为,只是语法不同?

iovurdzv

iovurdzv1#

Rx{Type}Rx<Type>都是 Package 指定类型的值的类。Rx{Type}使用工厂方法,而Rx<Type>通过构造函数创建。.obs可以用于任何值或对象,它返回适当类型的Rx对象。

以下是三种情况下的使用提示:
  • 在所有情况下,都可以通过调用.value属性并传入新值来更新该值。
  • 如果你想为特定或自定义类型的对象创建一个可观察变量,那么你应该使用Rx<Type>。例如Rx<Car>Rx<Student>等。
  • 如果你想为任何内置的预定义类型的对象创建一个可观察变量,那么你可以使用Rx{Type}。例如RxIntRxStringRxList等。
  • 如果你想让任何值都是可观察的,那么你可以使用.obs
  • Rx{Type}Rx<Type>的情况下,你可以用null值初始化,但在.obs的情况下,你不能将null值设置为obsetvables。

总的来说,这些类的主要目的是使GetX的使用更简单,并为开发人员提供更多的选项。虽然这些类之间有一些细微的差异,但它们都是为了方便Flutter中的GetX响应式编程而设计的。

相关问题