core/config/app_config.dart
Langkah 1: Definisikan variabel untuk URL API, tema aplikasi, dan pengaturan lainnya.
Langkah 2: Buat kelas statis untuk menyimpan pengaturan ini agar mudah diakses di seluruh aplikasi.
Langkah 3: Ekspor kelas ini agar dapat digunakan di file lain.
core/utils/route_utils.dart
Langkah 1: Definisikan semua rute untuk layar, seperti '/movieList', '/movieDetail', dan '/favorites'.
Langkah 2: Buat fungsi untuk melakukan navigasi menggunakan Navigator.push dan Navigator.pop.
Langkah 3: Ekspor fungsi navigasi ini agar mudah diakses di seluruh aplikasi.
core/global_component/string_constants.dart
Langkah 1: Buat konstanta string untuk teks yang digunakan di UI, seperti judul layar dan tombol.
Langkah 2: Ekspor konstanta ini untuk digunakan di berbagai tampilan aplikasi.
Langkah 3: Pastikan untuk menggunakan konstanta ini di tempat yang sesuai dalam tampilan.
core/global_component/image_constants.dart
Langkah 1: Definisikan jalur untuk gambar yang digunakan di UI, seperti logo dan ikon.
Langkah 2: Ekspor jalur gambar ini agar dapat digunakan di seluruh aplikasi.
Langkah 3: Tambahkan fallback untuk gambar jika gagal dimuat dari URL.
core/global_component/color_constants.dart
Langkah 1: Buat konstanta warna untuk palet aplikasi, seperti warna latar belakang, teks, dan tombol.
Langkah 2: Ekspor konstanta warna ini untuk menjaga konsistensi dalam desain.
Langkah 3: Gunakan warna ini di seluruh widget aplikasi.
Features
features/movies/models/movie_model.dart
Langkah 1: Definisikan kelas model untuk data film dengan atribut seperti id, title, posterUrl, dan releaseDate.
Langkah 2: Implementasikan metode untuk mengonversi objek JSON menjadi objek Dart.
Langkah 3: Ekspor model ini agar dapat digunakan di repositori dan ViewModel.
features/movies/models/genre_model.dart
Langkah 1: Buat kelas model untuk genre film dengan atribut seperti id dan name.
Langkah 2: Implementasikan metode untuk mengonversi objek JSON menjadi objek Dart.
Langkah 3: Ekspor model ini untuk digunakan di dalam aplikasi.
features/movies/view_models/movie_list_view_model.dart
Langkah 1: Buat kelas untuk ViewModel yang mengelola daftar film.
Langkah 2: Implementasikan metode fetchMovies untuk mengambil data film dari repositori.
Langkah 3: Gunakan notifyListeners untuk memberi tahu tampilan ketika data diperbarui.
features/movies/view_models/movie_detail_view_model.dart
Langkah 1: Buat kelas untuk ViewModel yang mengelola detail film.
Langkah 2: Implementasikan metode fetchMovieDetail untuk mengambil detail film berdasarkan ID.
Langkah 3: Gunakan notifyListeners untuk memperbarui tampilan ketika data detail film diambil.
features/movies/views/movie_list_view.dart
Langkah 1: Buat tampilan daftar film menggunakan ListView.
Langkah 2: Ambil data film dari MovieListViewModel dan tampilkan dalam daftar.
Langkah 3: Tambahkan logika navigasi ke layar detail film saat item dipilih.
features/movies/views/movie_detail_view.dart
Langkah 1: Buat tampilan detail film menggunakan Scaffold untuk struktur dasar.
Langkah 2: Ambil data dari MovieDetailViewModel dan tampilkan informasi lengkap film.
Langkah 3: Tambahkan tombol untuk menandai film sebagai favorit.
features/favorites/models/favorite_model.dart
Langkah 1: Definisikan model untuk film favorit dengan atribut yang diperlukan.
Langkah 2: Implementasikan metode untuk mengonversi objek JSON menjadi objek Dart.
Langkah 3: Ekspor model ini agar dapat digunakan di dalam fitur favorit.
features/favorites/view_models/favorites_view_model.dart
Langkah 1: Buat kelas untuk ViewModel yang mengelola daftar film favorit.
Langkah 2: Implementasikan metode untuk menambah dan menghapus film dari daftar favorit.
Langkah 3: Gunakan notifyListeners untuk memperbarui tampilan ketika daftar favorit berubah.
features/favorites/views/favorites_view.dart
Langkah 1: Buat tampilan untuk menampilkan daftar film favorit menggunakan ListView.
Langkah 2: Ambil data favorit dari FavoritesViewModel dan tampilkan dalam daftar.
Langkah 3: Tambahkan logika untuk menghapus film dari daftar favorit.
features/profile/models/user_model.dart
Langkah 1: Buat kelas model untuk menyimpan data pengguna seperti username dan email.
Langkah 2: Implementasikan metode untuk mengonversi objek JSON menjadi objek Dart.
Langkah 3: Ekspor model ini agar dapat digunakan dalam pengelolaan profil pengguna.
features/profile/view_models/profile_view_model.dart
Langkah 1: Buat kelas untuk ViewModel yang mengelola informasi profil pengguna.
Langkah 2: Implementasikan metode untuk mengambil dan memperbarui data pengguna.
Langkah 3: Gunakan notifyListeners untuk memperbarui tampilan ketika data profil diambil atau diubah.
features/profile/views/profile_view.dart
Langkah 1: Buat tampilan untuk menampilkan informasi profil pengguna.
Langkah 2: Ambil data pengguna dari ProfileViewModel dan tampilkan di UI.
Langkah 3: Tambahkan opsi untuk memperbarui informasi profil.
Data
data/repositories/movie_repository.dart
Langkah 1: Buat kelas repositori untuk mengelola pengambilan data film.
Langkah 2: Implementasikan metode untuk mengambil daftar film dan detail film dari API.
Langkah 3: Ekspor repositori ini agar dapat diakses oleh ViewModel.
API
api/movie_api.dart
Langkah 1: Buat kelas untuk menangani semua permintaan API terkait film.
Langkah 2: Implementasikan metode untuk melakukan panggilan HTTP dan mengembalikan data film.
Langkah 3: Tangani kesalahan dan ekspos metode ini agar bisa dipanggil dari repositori.
Local Storage
local_storage/shared_preferences_helper.dart
Langkah 1: Buat kelas helper untuk mengelola penyimpanan lokal menggunakan SharedPreferences.
Langkah 2: Implementasikan metode untuk menyimpan dan mengambil data favorit pengguna.
Langkah 3: Ekspor helper ini agar dapat digunakan di ViewModel untuk mengelola data lokal
https://dribbble.com/shots/21195926-Fashion-Commerce-App
lib : ├── core: │ ├── config: │ │ └── app_config.dart │ ├── utils : │ │ └── route_utils.dart │ └── global_component : │ ├── string_constants.dart │ ├── image_constants.dart │ └── color_constants.dart ├── features : │ ├── movies : │ │ ├── models : │ │ │ ├── movie_model.dart │ │ │ └── genre_model.dart │ │ ├── view_models : │ │ │ ├── movie_list_view_model.dart │ │ │ └── movie_detail_view_model.dart │ │ └── views : │ │ ├── movie_list_view.dart │ │ └── movie_detail_view.dart │ ├── favorites : │ │ ├── models : │ │ │ └── favorite_model.dart │ │ ├── view_models : │ │ │ └── favorites_view_model.dart │ │ └── views : │ │ └── favorites_view.dart │ └── profile : │ ├── models : │ │ └── user_model.dart │ ├── view_models : │ │ └── profile_view_model.dart │ └── views : │ └── profile_view.dart ├── data : │ └── repositories : │ └── movie_repository.dart ├── api : │ └── movie_api.dart ├── local_storage : │ └── shared_preferences_helper.dart └── main.dart
Pemetaan Algoritma perFile
Core