我对 Flutter 有点陌生。 我正在编写一个包含 Getx 和 Hive 包的应用程序。
我想通过使每个字段具有反应性来使我的模型可观察。我更喜欢这种方法,而不是让整个类在 Controller 中可见;这样做是模型本身引发了变化,在我看来这更类似于标准的 mvvm 方法(如果我错了你可以纠正我)。
我还想用@HiveField 标记我的模型字段。
现在,问题是我无法标记 Rx 字段,我被迫编写两个不同的字段,Rx 字段和 Hive 字段。 类似的东西:
@HiveField(1)
int _fieldDb;
RxInt fieldRx;
GbTrait(int value) :
_fieldDb = value,
fieldRx = value.obs;
通过这样做,我需要一直更新这两个值...有更好的方法吗? 非常感谢您的帮助。
最佳答案
您可以收听 Rx<T>
就像你会使用 Stream
一样s,所以每次你设置一个值给那个 Rx<T>
另一种方法将执行以更新也在 Hive
中的字段:
// ...
Rx<int> RxField = 0.obs.
RxField.listen((newValue) {
updateHiveField(newValue);
});
void updateHiveField(int newValue) {
Hive.box("yourBoxName").putAt(indexOfField, newValue);
}
现在每次设置这样的值时:
RxField.value = 10;
updateHiveField
方法将自动执行更新 Hive
字段。
关于具有 .obs 和 hive 字段的 flutter 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65475958/