CodeBlanks Logo Icon CodeBlanks

context.go ve push

context.go ile değiştirme ve context.push ile yığma öğrenirsin.

context.go ve context.push

context.go('/yol') mevcut yolu değiştirir; navigasyon yığınını yeni yola ayarlar ve geri dönüş olmaz. context.push('/yol') ise yeni yolu yığının üstüne ekler; böylece context.pop() ile geri dönebilirsin.

// Değiştir: geri dönüş olmaz
context.go('/ayarlar');

// Yığ: geri dönülebilir
context.push('/detay');

context.pop ile geri dönmek

context.pop() yığındaki en üstteki yolu kaldırır ve bir önceki ekrana döner. push ile eklenen yollar pop ile geri alınır; go ile değiştirilen yollarda ise geri dönüş yığını olmadığı için pop işe yaramaz.

ElevatedButton(
  onPressed: () => context.pop(),
  child: const Text('Geri'),
)

Uygulama Buton ile gezinme

DetayScreen adında StatelessWidget tanımla. Scaffold gövdesinde Center içine bir ElevatedButton koy. onPressed içinde context.go('/detay') çağrısı yapsın ve child olarak Text('Detay') göstersin. main içinde 'hazir' yazdır.

Başlangıç kodu

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

// DetayScreen sınıfı tanımla
// Scaffold içinde Center ve ElevatedButton olsun
// onPressed ile /detay yoluna git
// Buton yazısı 'Detay' olsun

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

Örnek çözüm

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

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () => context.go('/detay'),
          child: const Text('Detay'),
        ),
      ),
    );
  }
}

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 context.go ile context.push arasındaki fark nedir?

  • go async'dir, push sync'dir
  • go daha hızlıdır, push daha yavaştır
  • go yığını değiştirir, push yığının üstüne ekler Doğru cevap
  • go yalnızca Android'de çalışır, push yalnızca iOS'ta

Açıklama: context.go yığını değiştirir (geri dönüş yok), context.push yığının üstüne ekler (context.pop ile geri dönülebilir). Hız, platform ve async/sync farkı ilgili değildir.

2 context.go çağrısı

Soru
ElevatedButton(
  onPressed: () {
    ____;
  },
  child: const Text('Ayarlar'),
)
Cevap
ElevatedButton(
  onPressed: () {
    context.go('/ayarlar');
  },
  child: const Text('Ayarlar'),
)

Açıklama: GoRouter'da ekran değiştirmek için context.go kullanılır. Navigator.go GoRouter'ın parçası değildir, context.route ve context.build böyle metodlar yoktur.

3 Navigasyon metodları

Kavram Anlamı
context.go yığını değiştirir
context.push yığına ekler
context.pop geri döner
GoRouter yönlendirici

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