CodeBlanks Logo Icon CodeBlanks

Proje iskeleti

Not uygulamasının iskeletini ve modelini kurarsın.

Note model sınıfı

Not uygulamasının verisini tutmak için bir Note model sınıfı tanımlarsın. Alanlar final olur; id, baslik ve icerik gibi temel bilgileri saklar. fromJson ve toJson metodları ile JSON'a çevrim yaparsın; böylece notu ileride kalıcı olarak saklamak kolaylaşır.

class Note {
  final String id;
  final String baslik;
  final String icerik;

  Note(this.id, this.baslik, this.icerik);

  Map<String, dynamic> toJson() => {
    'id': id,
    'baslik': baslik,
    'icerik': icerik,
  };
}

Scaffold iskeleti

Not uygulamasının ekranı Scaffold üzerine kurulur. AppBar başlığı gösterir, gövde notları listeler ve FloatingActionButton yeni not ekleme akışını başlatır. Model henüz boş olsa da iskelet hazırdır.

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Notlar')),
      body: const Center(child: Text('Henüz not yok')),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        child: const Icon(Icons.add),
      ),
    );
  }
}

Uygulama Note modelini tanımla

Note sınıfını tanımla: final String id, final String baslik ve final String icerik alanları olsun. toJson metodu ekleyip bu üç alanı içeren bir Map döndürsün. main içinde bir Note nesnesi oluştur ve baslik alanını yazdır.

Başlangıç kodu

main.dart
// Note sınıfını tanımla
// id, baslik ve icerik alanları final olsun
// toJson metodunu ekle

void main() {
  // bir Note oluştur ve baslik'ını yazdır
}

Örnek çözüm

main.dart
class Note {
  final String id;
  final String baslik;
  final String icerik;

  Note(this.id, this.baslik, this.icerik);

  Map<String, dynamic> toJson() => {
    'id': id,
    'baslik': baslik,
    'icerik': icerik,
  };
}

void main() {
  final n = Note('1', 'Alışveriş', 'Süt ve ekmek');
  print(n.baslik);
}

Beklenen çıktı

Alışveriş

Soru ve cevaplar

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

1 Note modelindeki alanlar neden final olarak bildirilir?

  • Nesne oluşturulduktan sonra değişmezlik sağlamak için Doğru cevap
  • Veritabanı bağlantısı kurmak için
  • Animasyon süresini belirtmek için
  • UI çizimini hızlandırmak için

Açıklama: final alanlar nesne oluşturulduktan sonra değiştirilemez; bu da verinin tutarlı kalmasını sağlar. UI hızı, veritabanı bağlantısı ve animasyon süresi final ile ilgili değildir.

2 toJson metodu

Soru
class Note {
  final String id;
  final String baslik;
  final String icerik;

  Note(this.id, this.baslik, this.icerik);

  Map<String, dynamic> ____() => {'id': id, 'baslik': baslik, 'icerik': icerik};
}
Cevap
class Note {
  final String id;
  final String baslik;
  final String icerik;

  Note(this.id, this.baslik, this.icerik);

  Map<String, dynamic> toJson() => {'id': id, 'baslik': baslik, 'icerik': icerik};
}

Açıklama: toJson metodu modeli Map'e çevirir; bu Map daha sonra jsonEncode ile dizeleştirilebilir. fromJson Map'ten nesne üretir, encode bir fonksiyon adıdır ama metot adı değildir, save genel bir isimdir.

3 Note modeli ve iskelet

Kavram Anlamı
class Note model sınıfı
final String id değişmez alan
toJson Map'e çevirme
Scaffold ekran iskeleti

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