Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keeping final fields on the Widget or the State?

Tags:

flutter

dart

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?

like image 819
DogeLion Avatar asked May 09 '17 15:05

DogeLion


1 Answers

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.

like image 110
Collin Jackson Avatar answered Nov 09 '22 13:11

Collin Jackson