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

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

- Постройте страницу, имеющую следующий вид:

- Для хранения значений TextField внутри поля ‘адрес’ можно добавить действие, создающее или обновляющее документ. Допустим, необходимо обновить данные об адресе вошедшего в систему пользователя. Вот как это делается:
- Выберите виджет (т.е. кнопку «сохранить изменения») и добавьте действие «Обновить документ».
- Для пользователей, вошедших в систему, коллекция ‘пользователь’ доступна через меню Set Variable > Authenticated User, и вы должны указать ее ссылку для обновления. Поэтому можно выбрать ссылку для обновления через меню Set Variable > Authenticated User > User Reference.
- Совет: Если необходимо сохранить данные в коллекции, отличной от ‘пользователь’, убедитесь, что у вас есть доступ к документу, а затем укажите ссылку через меню Set Variable > [имя_коллекции] Document > Reference.
- В разделе Задать поля нажмите на кнопку + Добавить поле. Щелкайте, пока не увидите поле, в котором хранится пользовательский тип данных.
- Выберите Установить/Обновить [DataTypeName] (например, ‘Установить адрес’, ‘Обновить адрес’). Откроется всплывающее окно с левой стороны.
- Если вы хотите удалить существующие подполя из документа и добавить только поля, указанные здесь, включите опцию Clear Unspecified Values. Чтобы сохранить существующие подполя и обновить значения для указанных здесь полей, отключите эту опцию.
- Для параметра Update Type можно выбрать следующие варианты:
- Выбрать Set Individual Fields для обновления каждого поля отдельно.
- Выберите Set From Variable (Установить из переменной), чтобы установить его непосредственно из другой переменной того же типа данных.
- Выберите Удалить, чтобы удалить это поле из документа.
- Для данного примера установите для параметра Update Type значение Set Individual Fields. Теперь необходимо указать поля (переменные внутри пользовательского типа данных). Для этого нажмите на кнопку + Add Fields и укажите поля обычным образом (например, установите для Value Source значение From Variable, а затем UNSET -> Widget State -> TextFieldName).
- Нажмите кнопку Готово и затем Закройте.
Видео:https://www.loom.com/share/1018b0280452406bbdf6a76e59e257b0?sid=d5867802-7209-490d-a177-485e72fa174e
- Для отображения значений из пользовательского типа данных в любом виджете:
- Во-первых, убедитесь, что у вас есть доступ к документу, в котором есть поле с пользовательским типом данных. В данном примере мы храним данные об адресах в коллекции ‘Пользователь’ и можем напрямую получить доступ к документу для вошедших в систему пользователей через меню Set Variable > Authenticated User.
- Совет: Если вы храните данные в коллекции, отличной от ‘Пользователь’, вы должны запросить документ на странице или в любом виджете верхнего уровня.
- Выберите виджет, позволяющий задать значение из переменной.
- Здесь можно выбрать Документ. Чтобы отобразить адрес вошедшего в систему пользователя, выберите меню Set Variable > Authenticate User > [FieldName] (т.е. поле адреса).
- Выберите поле, которое вы хотите отобразить в данном текстовом поле.
- Нажмите кнопку Подтвердить.
- Во-первых, убедитесь, что у вас есть доступ к документу, в котором есть поле с пользовательским типом данных. В данном примере мы храним данные об адресах в коллекции ‘Пользователь’ и можем напрямую получить доступ к документу для вошедших в систему пользователей через меню Set Variable > Authenticated User.
Видео:https://www.loom.com/share/83aaf857b56e4d929c4d1e668ac783e9?sid=36c6d06e-3ec0-411c-8ee7-26d5a35f40da
Пример проекта
Демонстрируемые здесь страницы находятся в папке ‘Firebase’ этого примера проекта.