如何在 flutter getx 中给 obs 赋值
How to assign value to obs in flutter getx
下面的代码到目前为止工作正常,
class Controller extends GetxController{
var count = 0.obs;
increment() => count++;
}
但是当我分配一个值时,它没有按预期工作,不是类型转换事件。
class Controller extends GetxController{
var count = 0.obs;
reset() => count = 10;
}
我想知道如何在 get x obs objects 中赋值(使用'=')?
这个答案在我被告知我错了之后已经改变了。我想感谢 Ivo Beckers 指出我对 RxInt
工作原理的误解。请为他的回答点赞。
0.obs
return 类型 RxInt
。当您在此对象上调用 ++
时,它会调用 RxInt
对象上的 +
运算符并使用 1
来增加值。应该注意的是,RxInt
的 +
和 -
运算符确实操作对象本身,因此不像例如int
是不可变的,因此需要 return 来自操作的新对象。
当您执行 count = 10
时,您实际上是在说您希望 count
被类型 int
而不是 RxInt
的 10
覆盖.
您想要的更有可能是以下内容,您可以向任何订阅者报告该值已重置为 10
:
class Controller extends GetxController{
var count = 0.obs;
reset() => count.value = 10;
}
要设置 RxInt
的值,您只需将其分配给该值即可。所以你
reset() => count.value = 10;
++ 也起作用的原因是因为 count++
简单地转换为 count = count + 1
并且这会调用 RxInt
实例上的运算符,这只会增加它的值,如您在RxInt
:
的执行
class RxInt extends Rx<int> {
RxInt(int initial) : super(initial);
/// Addition operator.
RxInt operator +(int other) {
value = value + other;
return this;
}
/// Subtraction operator.
RxInt operator -(int other) {
value = value - other;
return this;
}
}
下面的代码到目前为止工作正常,
class Controller extends GetxController{
var count = 0.obs;
increment() => count++;
}
但是当我分配一个值时,它没有按预期工作,不是类型转换事件。
class Controller extends GetxController{
var count = 0.obs;
reset() => count = 10;
}
我想知道如何在 get x obs objects 中赋值(使用'=')?
这个答案在我被告知我错了之后已经改变了。我想感谢 Ivo Beckers 指出我对 RxInt
工作原理的误解。请为他的回答点赞。
0.obs
return 类型 RxInt
。当您在此对象上调用 ++
时,它会调用 RxInt
对象上的 +
运算符并使用 1
来增加值。应该注意的是,RxInt
的 +
和 -
运算符确实操作对象本身,因此不像例如int
是不可变的,因此需要 return 来自操作的新对象。
当您执行 count = 10
时,您实际上是在说您希望 count
被类型 int
而不是 RxInt
的 10
覆盖.
您想要的更有可能是以下内容,您可以向任何订阅者报告该值已重置为 10
:
class Controller extends GetxController{
var count = 0.obs;
reset() => count.value = 10;
}
要设置 RxInt
的值,您只需将其分配给该值即可。所以你
reset() => count.value = 10;
++ 也起作用的原因是因为 count++
简单地转换为 count = count + 1
并且这会调用 RxInt
实例上的运算符,这只会增加它的值,如您在RxInt
:
class RxInt extends Rx<int> {
RxInt(int initial) : super(initial);
/// Addition operator.
RxInt operator +(int other) {
value = value + other;
return this;
}
/// Subtraction operator.
RxInt operator -(int other) {
value = value - other;
return this;
}
}