Я изо всех сил пытаюсь выяснить архитектуру приложения Flutter, которое я хочу построить.
В частности, я пытаюсь выяснить Auth, коллекцию Firestore и Subcollection, и как они взаимодействуют с обоими Поставщик и навигатор.
Это приложение-список, сгруппированное в разделе Коллекции. Таким образом, некоторые примеры могут выглядеть следующим образом:
- Lists
- Chores - {owner, name, description, shared[id], itemCount}
- Errands - {name, note, lastEdited, items}
- House Cleaning
- Reminders
- Wishlist
- My Wishlist
- Games Wishlist
- Gift Ideas
- Prepurchase Decisions
- New House Requirements
- New Car Requirements
На странице root будут просто отображаться работы по дому, список желаний, решения о предварительной покупке, а если вы нажмете на одну, то отобразятся ее дочерние элементы, а при нажатии отобразить список дел, в котором вы можете переключать состояние каждого из них.
При нажатии на любую коллекцию, вы можете нажать на страницу «Задачи» ИЛИ «Настройки», чтобы изменить детали этой коллекции. После нажатия на любую отдельную задачу, вы можете нажать на ее страницу настроек , чтобы изменить ее детали.
Мне нужен совет о том, как объединить эти вещи.
- При загрузке я могу разместить Auth FutureBuilder или StateProvider на верхнем уровне.
- После загрузки анонимного пользователя я могу создать экземпляр подключения к его базе данных StreamProvider.
- Как только у него есть данные для отображения, я, наконец, могу отобразить
MaterialApp()
- После того, как пользователь выберет коллекцию, я могу передать этот CollectionId на
Navigator.push
страницу - На этой странице можно загрузить подколлекцию (скажем, рутинную работу) и зарегистрировать ее дочерние элементы в StreamProvider для загрузки поручений, уборки дома и напоминаний.
- Когда пользователь выбирает список дел, мы можем передать этот список на последней странице «Список дел», которая при переключении элементов может напрямую обновлять Firestore.
On (1) Я никогда не уверен, использовать ли FutureBuilder или какой-либо StreamProvide р. Я бы хотел, чтобы пользователи входили анонимно, а затем регистрировались в Google или Apple, чтобы иметь возможность входить на другие устройства и делиться списками с друзьями. y Вкл. (5) Я на самом деле не знаю, как загрузить подколлекцию.
Вкл. (6) Я не знаю, как я успешно выполнил бы страницу настроек, чтобы пользователь мог изменить имя списка, поделиться с друзьями, et c. Я хотел бы использовать Navigator.push
, но это взорвало бы любого провайдера подколлекций, который я настроил.
В тестировании я имел некоторый успех с рендерингом вложенного MaterialApp()
. Если пользователь доходит до загрузки Chores > Errands
, если я добавлю StreamProvider<ToDoList>
вокруг new MaterialApp()
, то, если это приложение откроет страницу настроек, у меня все равно будет доступ к Provider.of<ToDoList>(context);
но кажется, что я делаю что-то не так, и каждый учебник или статья, которую я видел, помещает провайдеров аутентификации и потоки данных в MaterialApp()
.
Я просто чувствую, что сейчас нахожусь в тупике и пытаюсь найти выход. Как вы обрабатываете пользовательский доступ к базе данных в приложении материалов с вложенными страницами, которые вы Pu sh и провайдеры, чтобы разрешить доступ к соответствующим данным?