Aplikasi cuaca sederhana yang dibangun dengan Flutter yang menampilkan informasi cuaca berdasarkan input kota dari pengguna atau lokasi terkini.
- 🏙️ Pencarian Kota: Cari cuaca berdasarkan nama kota
- 📍 Lokasi Terkini: Dapatkan cuaca untuk lokasi saat ini
- 🌡️ Informasi Detail: Suhu, kelembaban, kecepatan angin, dan tekanan udara
- 🎨 UI Modern: Antarmuka yang indah dengan gradien berdasarkan kondisi cuaca
- 🔄 Refresh: Perbarui data cuaca terkini
- 📱 Responsive: Desain yang responsif untuk berbagai ukuran layar
Aplikasi ini dibangun dengan arsitektur yang modular dan mudah dipahami:
lib/
├── models/
│ ├── weather_model.dart # Model data cuaca
│ └── location_model.dart # Model data lokasi
├── services/
│ ├── weather_service.dart # Service API cuaca
│ └── location_service.dart # Service lokasi GPS
├── widgets/
│ ├── weather_card.dart # Widget kartu cuaca
│ └── city_search_widget.dart # Widget pencarian kota
├── screens/
│ └── weather_screen.dart # Layar utama aplikasi
└── main.dart # Entry point aplikasi
- Flutter SDK (>= 3.7.0)
- Dart SDK
- Android Studio / VS Code
- OpenWeatherMap API Key (opsional untuk data real-time)
-
Install dependencies
flutter pub get
-
Konfigurasi API Key (Opsional)
Untuk menggunakan data cuaca real-time, API key OpenWeatherMap sudah dikonfigurasi.
-
Jalankan aplikasi
flutter run
- flutter: Framework UI
- http: ^1.1.0 - HTTP client untuk API calls
- geolocator: ^10.1.0 - GPS location services
- permission_handler: ^11.0.1 - Mengelola permission aplikasi
Aplikasi menggunakan data cuaca real-time dari OpenWeatherMap API dengan fallback ke data sampel untuk kota-kota besar di Indonesia:
- Jakarta
- Bandung
- Surabaya
- Medan
- Yogyakarta
- Semarang
- Models: Data structures untuk weather dan location
- Services: Business logic untuk API calls dan location handling
- Widgets: Reusable UI components
- Screens: Main application screens
- Weather service menangani semua API operations
- Location service mengelola GPS dan permissions
- UI widgets focus pada presentation layer
- Graceful error handling dengan fallback ke sample data
- User-friendly error messages
- Loading states untuk better UX
- Search Input: Input field dengan auto-suggestions
- Weather Card: Kartu cuaca dengan gradien berdasarkan kondisi
- Location Button: Tombol untuk menggunakan lokasi terkini
- Refresh Button: Tombol untuk memperbarui data
- ☀️ Clear (Cerah)
- ☁️ Clouds (Berawan)
- 🌧️ Rain (Hujan)
- ⛈️ Thunderstorm (Badai)
- ❄️ Snow (Salju)
- 🌫️ Mist/Fog (Kabut)
INTERNET: Akses internet untuk API callsACCESS_FINE_LOCATION: Lokasi GPS akuratACCESS_COARSE_LOCATION: Lokasi GPS kasar
NSLocationWhenInUseUsageDescription: Akses lokasi saat aplikasi digunakan
flutter build apk --releaseflutter build ios --releaseDibuat dengan ❤️ menggunakan Flutter
- Readable: Kode mudah dibaca dan dipahami
- Modular: Setiap komponen memiliki tanggung jawab yang jelas
- Reusable: Widget dan service dapat digunakan kembali
- Maintainable: Struktur yang mudah di-maintain dan dikembangkan
- Documented: Komentar dan dokumentasi yang jelas