context.go ve push
- Flutter kursu
- Orta seviye
- Ders 68/99
- 4 dk
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
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
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ı
ElevatedButton(
onPressed: () {
____;
},
child: const Text('Ayarlar'),
)
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 |