Skip to content

Hanzamas/weatherapp

Repository files navigation

Weather App 🌤️

Aplikasi cuaca sederhana yang dibangun dengan Flutter yang menampilkan informasi cuaca berdasarkan input kota dari pengguna atau lokasi terkini.

✨ Fitur

  • 🏙️ 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

🏗️ Arsitektur

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

🔧 Setup

Prerequisites

  • Flutter SDK (>= 3.7.0)
  • Dart SDK
  • Android Studio / VS Code
  • OpenWeatherMap API Key (opsional untuk data real-time)

Instalasi

  1. Install dependencies

    flutter pub get
  2. Konfigurasi API Key (Opsional)

    Untuk menggunakan data cuaca real-time, API key OpenWeatherMap sudah dikonfigurasi.

  3. Jalankan aplikasi

    flutter run

📋 Dependencies

  • 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

🌍 Data Cuaca

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

🎨 Design Patterns

1. Model-View-Service Architecture

  • Models: Data structures untuk weather dan location
  • Services: Business logic untuk API calls dan location handling
  • Widgets: Reusable UI components
  • Screens: Main application screens

2. Separation of Concerns

  • Weather service menangani semua API operations
  • Location service mengelola GPS dan permissions
  • UI widgets focus pada presentation layer

3. Error Handling

  • Graceful error handling dengan fallback ke sample data
  • User-friendly error messages
  • Loading states untuk better UX

📱 Fitur Utama

  • 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

Kondisi Cuaca yang Didukung:

  • ☀️ Clear (Cerah)
  • ☁️ Clouds (Berawan)
  • 🌧️ Rain (Hujan)
  • ⛈️ Thunderstorm (Badai)
  • ❄️ Snow (Salju)
  • 🌫️ Mist/Fog (Kabut)

🔐 Permissions

Android

  • INTERNET: Akses internet untuk API calls
  • ACCESS_FINE_LOCATION: Lokasi GPS akurat
  • ACCESS_COARSE_LOCATION: Lokasi GPS kasar

iOS

  • NSLocationWhenInUseUsageDescription: Akses lokasi saat aplikasi digunakan

🚀 Build

Android APK

flutter build apk --release

iOS

flutter build ios --release

👨‍💻 Author

Dibuat dengan ❤️ menggunakan Flutter


🔍 Code Quality

Prinsip Clean Code:

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published