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) 应该在所有情况下都能正常工作,除非 newValuenull