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

Вот как это выглядит в готовом виде:

кастом 1

Ниже приведены шаги для создания такого примера:

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

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

кастом 3

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

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

5.Чтобы отобразить значения из пользовательского типа данных в любом виджете:

  1. Во-первых, убедитесь, что у вас есть доступ к документу, в котором есть поле с пользовательским типом данных. В данном примере мы храним данные об адресе в коллекции ‘users’ и можем напрямую получить доступ к документу для вошедших в систему пользователей через меню Set Variable > Authenticated User.
    1. Совет: Если вы храните данные в коллекции, отличной от ‘users’, вы должны запросить документ на странице или в любом виджете верхнего уровня.
  2. Выберите виджет, который позволяет установить значение переменной.
  3. Здесь вы можете выбрать Документ. Чтобы показать адрес вошедшего в систему пользователя, выберите меню Set Variable > Authenticate User > [FieldName] (т.е. поле адреса).
    1. Выберите Поле, которое вы хотите отобразить в этом Текстовом поле.
    2. Нажмите кнопку Подтвердить.

Пример проекта

Страницы, показанные здесь, вы найдете в папке ‘Firebase’ этого примера проекта.