Flutter GETX - variable.value = newValue 和 variable(newValue) 有什么区别?
Flutter GETX - What is the difference between variable.value = newValue and variable(newValue)?
我一直在想,在Flutter GetX库中,如果我有一个这样定义的可观察变量
Rxn<MyClass> myObsObject = Rxn<MyClass>();
我可以通过以下方式更新它的值:
myObsObject(newValue) / myObsObject(null)
或以等效的方式
myObsObject.value = newValue / myObsObject.value = null
今天我发现这两种方法并不等同,因为在某些情况下(不知道如何重现 ATM)使用第一种方法不会重新触发 GetX
小部件的构建器,而第二个。
那么is/are以上两种方法的区别是什么?
你可以查看第一种方式的实现,你会看到是这样的:
T call([T? v]) {
if (v != null) {
value = v;
}
return value;
}
所以基本上,它仍然对 value
赋值,除非值为 null。
所以 myObsObject(newValue)
应该在所有情况下都能正常工作,除非 newValue
是 null
我一直在想,在Flutter GetX库中,如果我有一个这样定义的可观察变量
Rxn<MyClass> myObsObject = Rxn<MyClass>();
我可以通过以下方式更新它的值:
myObsObject(newValue) / myObsObject(null)
或以等效的方式
myObsObject.value = newValue / myObsObject.value = null
今天我发现这两种方法并不等同,因为在某些情况下(不知道如何重现 ATM)使用第一种方法不会重新触发 GetX
小部件的构建器,而第二个。
那么is/are以上两种方法的区别是什么?
你可以查看第一种方式的实现,你会看到是这样的:
T call([T? v]) {
if (v != null) {
value = v;
}
return value;
}
所以基本上,它仍然对 value
赋值,除非值为 null。
所以 myObsObject(newValue)
应该在所有情况下都能正常工作,除非 newValue
是 null