Cześć, na inżynierkę piszę aplikację w Flutterze+Firebase, jest to dla mnie pierwsza styczność z programowaniem na urządzenia mobilne oraz z używaniem Firebase. Generalnie według jednej serii na yt stworzyłem autentyfikację mojej aplikacji i obecnie jestem w momencie, gdy użytkownik się zalogował/zarejestrował i wyświetla się główny ekran. Kolejnym etapem jest funkcjonalność, czyli w skrócie chcę zrobić organizer zadań dla zespołów, użytkownik po zalogowaniu widzi listę pokoi/może tworzyć własne, a w nich będą znajdować się pula zadań, z której każdy użytkownik mający dostęp do tego pokoju może zadanie wziąć lub też dołożyć własne zadania do puli. Chciałbym zrobić tak, by każdy miał podgląd, czym w danym momencie zajmują się inne osoby w zespole. No i teraz mam kilka pytań:
- Miałem niewielką styczność z backendem, trochę z SQL, i teraz nie mam zbytnio pomysłu jak przypisać strukturę zadań do pokoju? Ogólnie chcę, aby room miał swoje właściwości typu id, owner, usersInRoom no i tasks. No ale tasks też będą miały określoną strukturę, jakieś description, id, date, name itp.Czyli w Firestore muszę mieć kolekcję Rooms, która ma pola id, owner ,usersInRoom, a tasks w Rooms jako kolekcja? Czyli dla każdej kolekcji porobić najpierw klasy w kodzie, tak?
- W jaki sposób mógłbym przypisać Rooms do użytkownika? Czy po zalogowaniu wykonywałaby się metoda, że ma wyświetlić roomy, których właściwość owner to nazwa tego użytkownika lub usersInRoom zawiera jego nazwę? Czy jakoś użytkownik powinien przechowywać nazwy grup, do których należy?
- Ostatni mój dylemat to data management. Fluttera dopiero się uczę na tej aplikacji, więc wiem, że jest mnóstwo podejść. W kursie autentyfikacji jak i tworzeniu czatu osoba prowadząca nie korzystała ani z providerów, ani reduxów itp itd. Jedynie przy logowaniu/rejestracji w celu przechowywania danych typu nazwa użytkownika, email, czy jest zalogowany korzystała z paczki SharedPreferences. Czy w mojej aplikacji będę potrzebował providerów itp? Czy provider zawsze umieszcza się na początku aplikacji, czy na przykład dopiero po logowaniu? Obecnie zakładam, że aplikacja będzie działać tylko online, więc do offline chyba nie potrzebuję przechowywać stanów?
Przepraszam za chaotyczny opis sytuacji :)