Proje iskeleti
- Flutter kursu
- Orta seviye
- Ders 61/99
- 4 dk
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
// 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
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
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)____,
);
}
}
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 |