CodeBlanks Logo Icon CodeBlanks

Düzenleme ekranı

Mevcut notu düzenlemek için form ekranı yazarsın.

Düzenleme ekranı

Mevcut notu düzenlemek için bir form ekranı yazarsın. TextEditingController ile başlık ve içerik alanlarını doldurur, kullanıcı kaydettiğinde Navigator.pop(context, duzenlenmisNot) ile güncel notu geri döndürürsün.

class DuzenlemeEkrani extends StatefulWidget {
  final Note not;
  const DuzenlemeEkrani({super.key, required this.not});

  @override
  State<DuzenlemeEkrani> createState() => _DuzenlemeEkraniState();
}

class _DuzenlemeEkraniState extends State<DuzenlemeEkrani> {
  late final baslikCtrl = TextEditingController(text: widget.not.baslik);
}

Navigator.pop ile değer döndürme

Düzenleme ekranında kullanıcı kaydet butonuna bastığında Navigator.pop(context, yeniNot) çağrısı yaparsın. Bu, önceki ekrana geri döner ve ikinci parametre olarak verilen değeri döndürür. Çağıran tarafta await Navigator.push(...) ile bu değeri yakalarsın.

ElevatedButton(
  onPressed: () {
    final duzenlenmis = Note('1', baslikCtrl.text, icerikCtrl.text);
    Navigator.pop(context, duzenlenmis);
  },
  child: const Text('Kaydet'),
)

Uygulama Düzenleme ekranını kur

DuzenlemeEkrani adında StatefulWidget tanımla. final Note not alanı required olsun. State içinde baslikCtrl adında TextEditingController(text: widget.not.baslik) tanımla. build metodu bir Scaffold döndürsün; gövdesinde TextFormField(controller: baslikCtrl) ve bir ElevatedButton olsun. Butonun onPressed'ında Navigator.pop(context) çağrısı yapsın. main içinde 'hazir' yazdır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

class Note {
  final String id;
  final String baslik;
  final String icerik;
  Note(this.id, this.baslik, this.icerik);
}

// DuzenlemeEkrani StatefulWidget tanımla
// final Note not (required)
// State içinde baslikCtrl adında bir controller tanımla
// build Scaffold döndürsün
// gövdede bir TextFormField ve ElevatedButton olsun
// buton onPressed geri dönmeyi sağlasın

void main() {
  // 'hazir' yazdır
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

class Note {
  final String id;
  final String baslik;
  final String icerik;
  Note(this.id, this.baslik, this.icerik);
}

class DuzenlemeEkrani extends StatefulWidget {
  final Note not;
  const DuzenlemeEkrani({super.key, required this.not});

  @override
  State<DuzenlemeEkrani> createState() => _DuzenlemeEkraniState();
}

class _DuzenlemeEkraniState extends State<DuzenlemeEkrani> {
  late final baslikCtrl = TextEditingController(text: widget.not.baslik);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Düzenle')),
      body: Column(
        children: [
          TextFormField(controller: baslikCtrl),
          ElevatedButton(
            onPressed: () => Navigator.pop(context),
            child: const Text('Kaydet'),
          ),
        ],
      ),
    );
  }
}

void main() {
  print('hazir');
}

Beklenen çıktı

hazir

Soru ve cevaplar

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

1 Düzenleme ekranında başlangıç değerini TextEditingController'a nasıl verirsin?

  • onChanged parametresi ile
  • text parametresi ile Doğru cevap
  • style parametresi ile
  • decoration parametresi ile

Açıklama: TextEditingController(text: deger) biçiminde başlangıç değeri verilir. style yazı stilidir, decoration etiket/kenarlıktır, onChanged değer değişince çağrılır; bunlar başlangıç değerini vermez.

2 pop ile değer döndür

Soru
ElevatedButton(
  onPressed: () {
    final duzenlenmis = Note('1', baslikCtrl.text, icerikCtrl.text);
    ____(context, duzenlenmis);
  },
  child: const Text('Kaydet'),
)
Cevap
ElevatedButton(
  onPressed: () {
    final duzenlenmis = Note('1', baslikCtrl.text, icerikCtrl.text);
    Navigator.pop(context, duzenlenmis);
  },
  child: const Text('Kaydet'),
)

Açıklama: Değer döndürerek geri dönmek için Navigator.pop kullanılır. push yeni ekran açar, context.go GoRouter metodudur, replace mevcut yolu değiştirir; değer döndürmezler.

3 Düzenleme parçaları

Kavram Anlamı
TextEditingController başlangıç değeri
TextFormField giriş alanı
Navigator.pop değer döndürme
ElevatedButton kaydet butonu

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