Where should one keep final values?
In the StatefulWidget
(my subclass of course) instance and access it from the State
(subclass) via widget.thatFinalField
, or
In the State
itself. I've seen both approaches already.. Any pros and cons for each of them?
You should store final
member fields (which are passed via constructor arguments) on the StatefulWidget
and make them public.
The StatefulWidget
's associated State
should use only the default constructor (no arguments), and its member fields should be private (starting with a _
) and mutable. Initialize them inline or in initState
if expensive or async work is necessary.
This pattern allows the StatefulWidget
to be recreated/rebuilt with new constructor arguments when its parents call setState
, while re-using the previous State
and letting it keep the values stored in its mutable member fields.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With