Fungsi: Sebagai titik masuk utama aplikasi.
Algoritma: Fungsi main() dipanggil, yang kemudian memanggil runApp() dengan widget utama, MainApp. MainApp ini menginisialisasi tema aplikasi dan rute utama yang akan dipakai di dalam aplikasi.
route_utils.dart
Fungsi: Mengatur routing untuk navigasi antar layar.
Algoritma: Fungsi generateRoute didefinisikan untuk menerima parameter RouteSettings. Berdasarkan routeName, fungsi ini mengembalikan widget layar yang sesuai.
car_model.dart
Fungsi: Mendefinisikan struktur data untuk objek mobil.
Algoritma: Class CarModel dibuat dengan atribut seperti id, name, price, dan brand untuk mewakili data mobil.
car_rental_view_model.dart
Fungsi: Menyimpan logika bisnis dan state untuk menampilkan daftar mobil yang tersedia.
Algoritma: Implementasi fungsi fetchCars() yang mengambil data dari CarRepository untuk diperbarui ke state.
car_repository.dart
Fungsi: Menyediakan data mobil dari API atau sumber data lokal.
Algoritma: Fungsi getCars() mengembalikan data mobil dari CarRemoteDataSource atau CarLocalDataSource jika diperlukan.
car_rental_screen.dart
Fungsi: Layar utama yang menunjukkan daftar mobil yang tersedia untuk disewa.
Algoritma: Menggunakan Consumer untuk mendengarkan perubahan state dari CarRentalViewModel. Data yang didapatkan ditampilkan menggunakan ListView untuk menampilkan daftar mobil.
rental_detail_view_model.dart
Fungsi: Mengelola logika bisnis dan state untuk menampilkan detail mobil tertentu yang disewa.
Algoritma: Implementasi fungsi fetchRentalDetails() yang mengambil data detail dari CarRepository untuk diperbarui di state.
lib/ ├── core/ │ ├── config/ │ │ └── main_app.dart │ ├── utils/ │ │ └── route_utils.dart │ └── global_component/ │ ├── string_constants.dart │ ├── image_constants.dart │ └── color_constants.dart ├── features/ │ ├── car_rental/ │ │ ├── models/ │ │ │ ├── car_model.dart │ │ │ ├── user_model.dart │ │ │ └── rental_details_model.dart │ │ ├── view_models/ │ │ │ ├── car_rental_view_model.dart │ │ │ └── rental_detail_view_model.dart │ │ └── views/ │ │ ├── car_rental_screen.dart │ │ └── rental_detail_screen.dart ├── data/ │ ├── repositories/ │ │ ├── car_repository.dart │ │ └── user_repository.dart │ └── sources/ │ ├── car_remote_data_source.dart │ └── car_local_data_source.dart ├── api/ │ └── car_rental_api.dart ├── local_storage/ │ └── shared_preferences_helper.dart └── main.dart main.dart
Fungsi: Sebagai titik masuk utama aplikasi. Algoritma: Fungsi main() dipanggil, yang kemudian memanggil runApp() dengan widget utama, MainApp. MainApp ini menginisialisasi tema aplikasi dan rute utama yang akan dipakai di dalam aplikasi. route_utils.dart
Fungsi: Mengatur routing untuk navigasi antar layar. Algoritma: Fungsi generateRoute didefinisikan untuk menerima parameter RouteSettings. Berdasarkan routeName, fungsi ini mengembalikan widget layar yang sesuai. car_model.dart
Fungsi: Mendefinisikan struktur data untuk objek mobil. Algoritma: Class CarModel dibuat dengan atribut seperti id, name, price, dan brand untuk mewakili data mobil. car_rental_view_model.dart
Fungsi: Menyimpan logika bisnis dan state untuk menampilkan daftar mobil yang tersedia. Algoritma: Implementasi fungsi fetchCars() yang mengambil data dari CarRepository untuk diperbarui ke state. car_repository.dart
Fungsi: Menyediakan data mobil dari API atau sumber data lokal. Algoritma: Fungsi getCars() mengembalikan data mobil dari CarRemoteDataSource atau CarLocalDataSource jika diperlukan. car_rental_screen.dart
Fungsi: Layar utama yang menunjukkan daftar mobil yang tersedia untuk disewa. Algoritma: Menggunakan Consumer untuk mendengarkan perubahan state dari CarRentalViewModel. Data yang didapatkan ditampilkan menggunakan ListView untuk menampilkan daftar mobil. rental_detail_view_model.dart
Fungsi: Mengelola logika bisnis dan state untuk menampilkan detail mobil tertentu yang disewa. Algoritma: Implementasi fungsi fetchRentalDetails() yang mengambil data detail dari CarRepository untuk diperbarui di state.