Представление данных

От того, как в приложении устроены данные, зависит почти всё остальное: скорость работы, количество правок при изменении требований и то, насколько легко разобраться в проекте через полгода. Этот раздел — про то, чем FlutterFlow оперирует, когда речь идёт о данных.

Переменные

Переменные хранят то, что меняется по ходу работы приложения: ввод пользователя, текущее состояние экрана, данные, полученные с сервера. Без них интерфейс остался бы статичной картинкой.

Типы данных

Тип данных определяет, что именно переменная может хранить и что с этим можно делать. Ошибка в выборе типа обычно всплывает не сразу, а на записи в базу или на разборе ответа API — поэтому лучше решать это заранее.

инфо

О примитивных и составных типах — в подробном руководстве; когда встроенных не хватает, создавайте собственный тип данных.

Изменяемость данных

Все переменные во FlutterFlow изменяемые: их значения можно менять во время работы приложения — по действию пользователя или по событию. Для неизменяемых значений есть константы: один раз задали в конструкторе — и в приложении оно уже не поменяется.

Глобальные свойства

Глобальные свойства — встроенные переменные, доступные в любом месте приложения. Создать или изменить их нельзя, они приходят от самого FlutterFlow: текущее время, платформа, размеры экрана, статус авторизации. Как ими пользоваться — в статье о предопределённых свойствах.

Инкапсуляция

Инкапсуляция — принцип из объектно-ориентированного программирования: данные и работающая с ними логика лежат вместе, а прямой доступ к внутренностям ограничен, чтобы их нельзя было случайно испортить.

Как это устроено во FlutterFlow

Визуальная среда поддерживает тот же принцип. Два примера:

  1. Компоненты и кастомные виджеты. Виджет объединяет вёрстку и связанную с ней логику в одном месте.

    Скажем, для профиля пользователя вы собираете компонент с фотографией, именем и кнопкой связи. Дальше он вставляется везде, где нужен профиль, а правки в вёрстке или поведении делаются в одном месте — и расходятся по всему приложению.

  2. Действия на бэкенде. Логику, которую вызывают из разных мест — обработку ввода, обращение к базе, вызов внешнего API, — можно описать один раз и переиспользовать.

    Так интерфейс перестаёт знать, как именно обрабатываются данные, и бизнес-логика живёт отдельно от вёрстки.

Что это даёт

  • Переиспользование: собранный компонент вставляется в любое место без копирования виджетов.
  • Поддержка: правка логики в блоке действий меняет поведение везде, где он вызывается, — не приходится обходить десятки экранов.
  • Масштабирование: проект растёт без превращения в клубок, пока части остаются самостоятельными.
перевод официальной документации FlutterFlow

обновлено

ESC