2

I've always been thinking that in Flutter GetX library, if I have an observable variable defined in this way

Rxn<MyClass> myObsObject = Rxn<MyClass>();

I could update its value by doing:

myObsObject(newValue) / myObsObject(null)

or in an EQUIVALENT WAY

myObsObject.value = newValue / myObsObject.value = null

Today I discovered that the 2 methods are NOT equivalent, since doing the first way in some cases (don't know how to reproduce ATM) doesn't retrigger the builder of a GetX widget, while the second does.

So what is/are the difference(s) between the two methods up above?

cokeman19
  • 2,405
  • 1
  • 25
  • 40
Ale TheFe
  • 1,540
  • 15
  • 43

1 Answers1

4

You can check the implementation of the first way and you will see that it is this:

T call([T? v]) {
  if (v != null) {
    value = v;
  }
  return value;
}

So basically, it still does the assignment to value except when the value is null.

So myObsObject(newValue) should work fine in all cases except when newValue is null

Ivo
  • 18,659
  • 2
  • 23
  • 35