Давайте рассмотрим, как можно использовать пользовательские типы данных в документах Firestore на примере. Представьте, что у вас есть приложение, в котором пользователи могут вводить свои адресные данные. Мы можем создать пользовательский тип данных под названием ‘address’ для хранения этих адресных полей в структурированном виде.
Вот как это выглядит в готовом виде:

Ниже приведены шаги для создания такого примера:
- Создайте пользовательский тип данных с именем ‘address’.
- Чтобы использовать пользовательский тип данных в документе Firestore, необходимо создать новое поле внутри коллекции и присвоить ему пользовательский тип данных. Для этого примера создадим новое поле в коллекции ‘users’.

3. Создайте страницу, которая выглядит так, как показано ниже:

4. Чтобы сохранить значения TextField внутри поля ‘address’, можно добавить действие, которое создает или обновляет документ. Допустим, вы хотите обновить данные адреса для вошедшего в систему пользователя. Вот как вы это сделаете:
- Выберите виджет (т.е. кнопку «сохранить изменения») и добавьте действие «Обновить документ».
- Для зарегистрированных пользователей коллекция ‘users’ доступна через меню Set Variable > Authenticated User, и вы должны указать ее ссылку для обновления. Поэтому вы можете выбрать ссылку для обновления через меню Set Variable > Authenticated User > User Reference.
- Совет: Если вы хотите хранить данные в коллекции, отличной от ‘users’, убедитесь, что у вас есть доступ к документу, а затем укажите ссылку через меню Set Variable > [имя_коллекции] Document > Reference.
- В разделе Задать поля нажмите на кнопку + Добавить поле. Щелкайте, пока не увидите поле, в котором хранится пользовательский тип данных.
- Выберите Set/Update [DataTypeName] (например, ‘Set address’, ‘Update address’). Откроется всплывающее окно с левой стороны.
- Если вы хотите удалить существующие подполя из документа и добавить только поля, указанные здесь, включите опцию Clear Unspecified Values. Чтобы сохранить существующие подполя и обновить значения для указанных здесь полей, держите его отключенным.
- Для параметра Тип обновления можно выбрать следующие варианты:
- Выберите Set Individual Fields, чтобы обновить каждое поле отдельно.
- Выберите Установить из переменной, чтобы установить его непосредственно из другой переменной того же типа данных.
- Выберите Delete (Удалить), чтобы удалить это поле из документа.
- Для данного примера установите тип обновления на Set Individual Fields. Теперь необходимо указать поля (переменные внутри пользовательского типа данных). Для этого нажмите на + Add Fields и укажите поля, как вы обычно это делаете (например, установите Value Source в From Variable, а затем UNSET -> Widget State -> TextFieldName).
- Нажмите Готово и затем Закрыть.
5.Чтобы отобразить значения из пользовательского типа данных в любом виджете:
- Во-первых, убедитесь, что у вас есть доступ к документу, в котором есть поле с пользовательским типом данных. В данном примере мы храним данные об адресе в коллекции ‘users’ и можем напрямую получить доступ к документу для вошедших в систему пользователей через меню Set Variable > Authenticated User.
- Совет: Если вы храните данные в коллекции, отличной от ‘users’, вы должны запросить документ на странице или в любом виджете верхнего уровня.
- Выберите виджет, который позволяет установить значение переменной.
- Здесь вы можете выбрать Документ. Чтобы показать адрес вошедшего в систему пользователя, выберите меню Set Variable > Authenticate User > [FieldName] (т.е. поле адреса).
- Выберите Поле, которое вы хотите отобразить в этом Текстовом поле.
- Нажмите кнопку Подтвердить.
Пример проекта
Страницы, показанные здесь, вы найдете в папке ‘Firebase’ этого примера проекта.