flutter ์ฑ ๊ฐ๋ฐ ์๋ จ ์ฃผ์ฐจ์ ๋ค์ด์ค๋ฉฐ ๋ถ์ฉ ํ์ตํด์ผ ํ ์์ด ๋ง์์ก๋ค.
ํฌ๊ฒ ์ฑํฐ๋ฅผ ๋๋ ๋ณด๋ฉด, MVVM, api ํต์ , firebase ์ฐ๋์ด๋ค.
์ถ๊ฐ์ ์ผ๋ก ์น ์์ผ๊ณผ GPS๊ฐ ์์ง๋ง, ๊ทธ๋ถ๋ถ์ ๊ฐ์ธ๊ณผ์ ์ ๋จผ์ ์ง๋๋ฅผ ๋ง์ถ ๋ค ์งํํ๋ ค๊ณ ํ๋ค.
์ ์ฒด์ ์ธ ์ํคํ
์ฒ๋ compose์ ๋งค์ฐ ํก์ฌํ๋ค.
๋ค๋ง riverpod ํน์ ์ ์ฌ์ฉ๋ฒ๋ผ๋์ง, flutter ํน์ ์ MVVM ๊ตฌ์กฐ ๊ด๋ฆฌ๋ผ๋์ง.
์ด๋ฐ ๋ถ๋ถ์์ ํท๊ฐ๋ฆฌ๋ ๊ฒ๋ค์ด ์์์ง๋ง, ๊ตฌ๊ธ๋ง๊ณผ ํํฐ๋ ๋ฑ ์ฃผ๋ณ์ ๋์์ ํตํด ์กฐ๊ธ์ฉ ์์๊ฐ ์ ์์๋ค.
๋ชจ๋ viewmodel์ ์ต์ข
์ ์ผ๋ก ํ๋์ ์ํ๋ง ๊ด๋ฆฌํ ์ ์๋ค๋ ์ ์ด ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ถ์ด์๋ค.
Generator ๋ฐฉ์์ provider๋ฅผ ์ง์ ์์ฑํด์ฃผ์ง ์์๋ ๋๋ค.
Counsumer๋ง ์ ์ฌ์ฉํด์ค๋ ์ํ๊ด๋ฆฌ์ ์ด๋ ค์์ ์์๋ค.
์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถํด์ผ ํ ๋ถ๋ถ์ ๋ ๊ฑฐ์ ๋ฐฉ์์ด๋ค.
notifier์ AsyncNotifier ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ถ๊ฐ์ ์ธ Provider ๊ตฌํ์ด ํ์ํ ๋ถ๋ถ์ด๊ธฐ์ ๋ ์์๋ด์ผ๊ฒ ๋ค.
HTTP ํต์ ์ ๋ํด ์์๋ดค๋ค.
Client ๊ฐ์ฒด๋ฅผ ํตํด ์๋ฒ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
Uri.parse๋ฅผ ํตํด Uri ์ฃผ์(String)์ Client์ ๋๊ฒจ์ค ์ ์๋ค.
์ดํ, Client๋ ๋ค์๊ณผ ๊ฐ์ ์์
์ ์คํํ๋ค.
flutter์์ firebase ์, ํ์์ ์ผ๋ก ๋ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค.
flutter pub add cloud_firestore
flutter pub add firebase_core
์ดํ CRUD์ ๋ฐ๋ผ firestroe DB ๋ด ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ๋ค.
abstract class TodoRepository {
Future<void> addTodo(ToDoEntity todo);
Future<void> updateTodo(ToDoEntity todo);
Future<void> deleteTodo(ToDoEntity todo);
Future<List<ToDoEntity>> getTodos();
}
firebase์ firestore๋ colletion, doc์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, colletion์ด ํ
์ด๋ธ์ ์๋ฏธํ๊ณ doc๋ ๊ฐ ํํ์ ์๋ฏธํ๋ค.
๋น์ฐํ NoSQL์ผ๋ก ์์ฑ๋์ด ๋ฐฉ์์ด ๋ค๋ฅด์ง๋ง, ์กฐ๊ธ์ ๋น์ทํ ๋ถ๋ถ์ด ์๋ค.
colletion์ ์ฐธ์กฐํ ๋, QueryDocumentSnapshot์ ํ์น ์๊ฒ ๋ณผ ์ ์๋ค.
์ด๋ ๋ฌธ์๋ค์ ๊ฐ์ง๊ณ ์๋ ๋ฌถ์ ๋จ์์ด๋ฉฐ, .data ๋ฉ์๋๋ฅผ ํตํด ์์ ๋ฌธ์๋ค(DocumentSnapshot)์ ์ป์ด๋ผ ์ ์๋ค.
DocumentSnapshot์ document ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค.