Вложенные коллекции
Коллекция, созданная внутри документа, называется вложенной — subcollection. Например, коллекция «comments» внутри «posts» хранит комментарии конкретного поста.
Такая структура выигрывает, когда запросы к одной коллекции почти всегда привязаны к документу другой: загрузить комментарии конкретного поста, найти среди них самые залайканные.
FlutterFlow поддерживает один уровень вложенности: коллекция → вложенная коллекция. Второй уровень (коллекция → вложенная 1 → вложенная 2) недоступен.

- Как устроена структура базы Firebase.
- Пройдены все шаги подключения Firebase.
Пример: чат
Соберём страницу чат-комнаты: список сообщений и поле для нового.
- Документ вложенной коллекции создаётся под существующей ссылкой — если сама вложенная коллекция описана.
- Запросить вложенную коллекцию можно двумя способами: указать ссылку на родительский документ (UserA → favorites) или не указывать её вовсе — тогда получится запрос collectionGroup по всем вложенным коллекциям сразу (все Users → Favorites).
Сначала структура. Нужны две коллекции: одна с описанием комнат, другая с сообщениями. Сообщения всегда показываются в контексте конкретной комнаты, поэтому им место во вложенной коллекции.
Получается так:

Порядок работы:
- Создать коллекцию
- Создать вложенную коллекцию
- Наполнить коллекцию данными
- Собрать страницу со списком комнат
- Собрать страницу сообщений
1. Создать коллекцию
Создайте коллекцию chat_rooms — в ней будут описания комнат. В схему добавьте поле для названия: chat_room_name.

2. Создать вложенную коллекцию
- Откройте Firestore в меню слева.
- Нажмите кнопку (+).
- Введите название коллекции — messages.
- Включите тумблер Is Subcollection.
- Появится список существующих коллекций: нажмите Unset и выберите родительскую — здесь это chat_rooms.
- Нажмите Create.
- Опишите схему документа: для «messages» это поля message (текст сообщения) и from (кто отправил).
3. Наполнить коллекцию данными
Добавьте несколько комнат через Firestore Content Manager.
4. Страница со списком комнат
Первая страница показывает список комнат; по нажатию открывается вторая — с сообщениями.
- Запросите коллекцию chat_rooms и выведите названия комнат в ListTile внутри ListView.
- На Tap у ListTile добавьте действие Navigate To и откройте страницу сообщений. При переходе передайте на неё запись комнаты — как это делается, описано в разделе про передачу данных между страницами.
5. Страница сообщений
Вторая страница показывает сообщения и позволяет отправить новое.
-
Соберите страницу из ListView, ListTile, TextField и Button — примерно так:

-
На ListView повесьте запрос к вложенной коллекции. Он ничем не отличается от обычного, кроме одного: нужно указать ссылку на родительский документ — в нашем случае на комнату из chat_rooms. Тогда придут сообщения только этой комнаты.
- На нажатие кнопки «Send» добавьте действие create document для коллекции
messagesи передайте текущую ссылку наchat_rooms. Текст сообщения возьмите из From Variable > Widget State > [имя TextField].