Модель FlutterFlow
Класс FlutterFlowModel представляет собой абстрактный класс, используемый в FlutterFlow для обеспечения единой и расширяемой структуры управления состоянием и поведением виджетов (как страниц, так и компонентов). Он инкапсулирует логику инициализации, управления состоянием и освобождения ресурсов, упрощая обработку жизненного цикла виджетов и их моделей.
FlutterFlow автоматически генерирует файл flutter_flow_model.dart, который содержит класс FlutterFlowModel и вспомогательные методы, такие как wrapWithModel() и createModel().
Ниже приведена диаграмма, иллюстрирующая, как эти вспомогательные классы и методы используются в классе виджета или модели:

Когда компонент добавляется на вашу страницу (и каждый создаваемый вами компонент генерирует как виджет, так и класс модели), приведённая ниже схема объясняет, как используются вспомогательные классы при наличии дочернего компонента:

Вот разбивка жизненного цикла класса FlutterFlowModel:
Инициализация
Обеспечивает инициализацию модели только один раз и связывает её с BuildContext и связанным с ней виджетом.
abstract class FlutterFlowModel<W extends Widget> {
// Initialization methods
bool _isInitialized = false;
void initState(BuildContext context);
void _init(BuildContext context) {
if (!_isInitialized) {
initState(context);
_isInitialized = true;
}
if (context.widget is W) _widget = context.widget as W;
_context = context;
}
Ссылки на виджет и контекст
Предоставляет ссылки на связанный виджет и его BuildContext.
// The widget associated with this model. This is useful for accessing the
// parameters of the widget, for example.
W? _widget;
W? get widget => _widget;
// The context associated with this model.
BuildContext? _context;
BuildContext? get context => _context;
_widget и _context (приватные поля) хранят ссылки на виджет и контекст. widget и context (геттеры) являются публичными акцессорами для _widget и _context.
Освобождение ресурсов
Управляет очисткой ресурсов при освобождении модели или виджета.
bool disposeOnWidgetDisposal = true;
void dispose();
void maybeDispose() {
if (disposeOnWidgetDisposal) {
dispose();
}
// Remove reference to widget for garbage collection purposes.
_widget = null;
}