Сохранять последние поля в виджете или состоянии?

Где хранить окончательные значения?

в StatefulWidget (мой подкласс, конечно) и доступ к нему из State (подкласс) через widget.thatFinalField, или же

в State сам. Я уже видел оба подхода. Есть ли плюсы и минусы для каждого из них?

1 ответ

Решение

Вы должны хранить final поля-члены (которые передаются через аргументы конструктора) на StatefulWidget и сделать их публичными.

StatefulWidgetассоциируется State следует использовать только конструктор по умолчанию (без аргументов), а его поля-члены должны быть закрытыми (начиная с _) и изменчивый. Инициализируйте их в строке или в initState если нужна дорогая или асинхронная работа

Эта модель позволяет StatefulWidget воссоздавать / перестраивать с новыми аргументами конструктора, когда его родители вызывают setStateпри повторном использовании предыдущего State и позволяя ему хранить значения, хранящиеся в его изменяемых полях-членах.

Другие вопросы по тегам