Перейти к основному содержимому

Состояние приложения

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

app-state-variables.avif

Переменные состояния приложения следует использовать в сценариях, когда одни и те же данные нужно получать и изменять из нескольких мест в приложении. Например, в приложении для покупок товары в корзине пользователя обычно доступны на разных страницах.

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

Переменные состояния приложения

Давайте разберём, как управлять переменной состояния приложения на примере добавления товаров в корзину в приложении для покупок.

Создание переменной состояния приложения

Перейдите в боковое меню навигации слева и выполните следующие шаги, чтобы создать переменную.

Свойства переменной состояния приложения

  • isList: Указывает, является ли это поле списком (например, список строк или список пользовательских типов данных).
  • Persisted: Определяет, сохраняется ли состояние приложения на диск, чтобы его можно было загрузить при перезапуске приложения. В противном случае поле будет сброшено при перезапуске.
Generated Code

Хотите узнать, что происходит, когда переключатель Persisted включён? Ознакомьтесь с руководством по Generated Code.

Использование состояния приложения

Теперь к переменной можно обращаться через меню Set From Variable. Например, на странице корзины вы можете пройтись по переменной состояния приложения в цикле, чтобы отобразить каждый товар.

access-app-state-variable.avif

Обновление состояния приложения [Action]

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

При обновлении состояния приложения через редактор Action Flow в настройках действия будут доступны следующие параметры. update-app-state-action.png

Тип обновления

Как это обновление состояния приложения повлияет на ваше приложение.

  • Rebuild All Pages: Перестраивает все страницы приложения при обновлении этой переменной состояния приложения.
  • Rebuild Current Page: Перестраивает только текущую страницу при обновлении этой переменной состояния приложения.
  • No Rebuild: Перестройка не требуется.
Generated Code

Хотите узнать, как обрабатываются изменения состояния внутри при выборе разных параметров Update Type? Изучите подробное руководство по FFAppState.

Вот краткое руководство по обновлению переменной состояния приложения. Нам нужно добавить действие к кнопке «Добавить в корзину». В этом действии мы укажем детали продукта и настроим добавление в текущий список корзины.

подсказка

Если вы хотите перестроить страницу или компонент без обновления переменных состояния, используйте действие состояния Rebuild.

Часто задаваемые вопросы

Почему некоторые типы переменных недоступны в состоянии приложения?

Некоторые типы переменных, например Firestore Documents и Supabase Row, можно использовать в состоянии страницы или компонента, но не в состоянии приложения. Это связано с тем, что переменные состояния приложения предназначены для глобального использования и остаются в памяти на протяжении всего приложения. Когда переменные состояния приложения помечены как persisted, значение переменной сохраняется в локальном хранилище устройства.

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

Если вам нужно работать с такими типами данных, рекомендуется хранить их в состоянии страницы или компонента.