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

Пользовательские типы данных

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

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

Пользовательские типы данных имеют несколько ключевых преимуществ:

  • Повторно используемые: Определите один раз, применяйте везде.
  • Легко обновляемые: Измените структуру данных в одном месте, и это отразится во всем приложении.
  • Согласованные: Обеспечивают единообразный формат данных в приложении.
  • Эффективные: Упрощают обработку сложных данных, снижая количество ошибок и дублирующего кода.
к сведению
  • Используйте пользовательский тип данных, когда предопределенные типы данных, такие как integer и string, могут быть недостаточны для хранения определенных видов информации.
  • FlutterFlow также поддерживает некоторые Встроенные типы данных.

custom-data-types.avif

При создании пользовательского типа данных внутри создается Struct. Struct, или структура, — это составной тип данных, который позволяет объединять поля разных типов данных для построения структуры данных в соответствии с вашими конкретными нуждами.

к сведению

Имя класса для таких типов данных генерируется путем добавления «Struct» к имени типа данных. Например, если вы создадите пользовательский тип данных с именем «Cart», соответствующий класс будет назван «CartStruct».

Создание пользовательского типа данных

Чтобы создать пользовательский тип данных, укажите его имя и соответствующие поля. Каждое поле может иметь свой тип данных. Вы также можете указать, должно ли поле допускать несколько значений, используя переключатель Is List.

Соглашение об именовании

При именовании пользовательских типов данных всегда используйте UpperCamelCase, как рекомендуется в Dart Style Guide. Подробнее см. в руководстве по Именованию переменных и функций.

Доступ к пользовательскому типу данных

После создания пользовательского типа данных он внутри обрабатывается как класс Dart. Однако простое определение пользовательского типа данных не содержит реальных данных. Чтобы работать с фактическими данными, такими как профиль пользователя или отзыв, необходимо создать экземпляр пользовательского типа данных.

Создание экземпляра позволяет:

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

Чтобы создать экземпляр пользовательского типа данных, сначала создайте переменную состояния (типа Data Type), которая будет содержать экземпляр. Затем, чтобы создать экземпляр и добавить его в переменную состояния, откройте диалог Set from Variable и выберите Create Data Type Object > Project Data Type. Выберите тип данных, который хотите использовать. После этого задайте значения для каждого из обязательных полей.

Пользовательский тип данных в пользовательском коде

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

custom-data-in-custom-code.avif

Пример использования: сопоставление ответов JSON из вызовов API

Рассмотрим случай, когда вы вызываете API, который возвращает детали продукта. Вы можете создать пользовательский тип данных «Product», представляющий структуру JSON, и затем сопоставить значения JSON с полями пользовательского типа данных.

Таким образом, если ответ JSON выглядит так:

{
"id": "a1b2c3d4e5f678901234567",
"name": "Jacket",
"price": 199.99,
"reviews": [
{
"id": "rev101",
"username": "mike",
"rating": 4,
"comment": "This product exceeded my expectations in every way. Highly recommended!",
},
{
"id": "rev102",
"username": "kera",
"rating": 2,
"comment": "Great quality, but the color was not as shown in the picture.",
}
],
}

Вот как выполнить сопоставление с пользовательским типом данных:

mapping-json-to-custom-data-type.avif