CodeBlanks Logo Icon CodeBlanks

Proje iskeleti

Hava durumu uygulamasının iskeletini ve modelini kurarsın.

Weather model sınıfı

Hava durumu verisini tutmak için bir Weather model sınıfı tanımlarsın. Alanlar final olur ve fromJson fabrika kurucusu JSON'dan nesne oluşturur. Böylece API yanıtını tür güvenli biçimde saklarsın.

class Weather {
  final String sehir;
  final double sicaklik;

  Weather(this.sehir, this.sicaklik);

  factory Weather.fromJson(Map<String, dynamic> json) {
    return Weather(
      json['sehir'] as String,
      (json['sicaklik'] as num).toDouble(),
    );
  }
}

Scaffold iskeleti

Uygulamanın ekranı Scaffold üzerine kurulur; AppBar başlığı gösterir, gövde ise hava durumu verisini sergiler. Model henüz boş olsa da iskelet hazır olur.

class WeatherScreen extends StatelessWidget {
  const WeatherScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Hava Durumu')),
      body: const Center(child: Text('Yükleniyor...')),
    );
  }
}

Uygulama Weather modelini tanımla

Weather sınıfını tanımla: final String sehir ve final double sicaklik alanları olsun. fromJson fabrika kurucusu ekle. main içinde verilen Map'ten nesne oluştur ve sehir alanını yazdır.

Başlangıç kodu

main.dart
// Weather sınıfını tanımla
// sehir ve sicaklik alanları final olsun
// fromJson fabrika kurucusunu ekle

void main() {
  final m = {'sehir': 'İstanbul', 'sicaklik': 18.5};
  // m'den Weather oluştur ve sehir'ini yazdır
}

Örnek çözüm

main.dart
class Weather {
  final String sehir;
  final double sicaklik;

  Weather(this.sehir, this.sicaklik);

  factory Weather.fromJson(Map<String, dynamic> json) {
    return Weather(
      json['sehir'] as String,
      (json['sicaklik'] as num).toDouble(),
    );
  }
}

void main() {
  final m = {'sehir': 'İstanbul', 'sicaklik': 18.5};
  final w = Weather.fromJson(m);
  print(w.sehir);
}

Beklenen çıktı

İstanbul

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Weather modelinde sicaklik alanı hangi türde olmalıdır?

  • Widget
  • Future
  • Color
  • double Doğru cevap

Açıklama: sicaklik ondalıklı bir sayı olabilir; bu yüzden double uygundur. Widget arayüz içindir, Future async işlemler içindir, Color renk içindir.

2 num değerini double'a çevir

Soru
class Weather {
  final String sehir;
  final double sicaklik;

  Weather(this.sehir, this.sicaklik);

  factory Weather.fromJson(Map<String, dynamic> json) {
    return Weather(
      json['sehir'] as String,
      (json['sicaklik'] as num)____,
    );
  }
}
Cevap
class Weather {
  final String sehir;
  final double sicaklik;

  Weather(this.sehir, this.sicaklik);

  factory Weather.fromJson(Map<String, dynamic> json) {
    return Weather(
      json['sehir'] as String,
      (json['sicaklik'] as num).toDouble(),
    );
  }
}

Açıklama: JSON'dan gelen sayı num olabilir; double alana atamak için .toDouble() ile çevirirsin.

3 Weather modeli ve iskelet

Kavram Anlamı
class Weather model sınıfı
final double sicaklik değişmez alan
fromJson fabrika kurucu
Scaffold ekran iskeleti

Orta seviye bölümündeki tüm dersler