GoRouter nedir?
- Flutter kursu
- Orta seviye
- Ders 66/99
- 4 dk
GoRouter ile bildirimsel navigation 2.0 yapmayı öğrenirsin.
GoRouter nedir?
GoRouter, Flutter için bildirimsel (declarative) navigation 2.0 sağlayan bir pakettir. Yolları bir liste halinde tanımlarsın; her yol bir GoRoute nesnesidir. MaterialApp.router ile GoRouter'ı uygulamanın yönlendirmesine bağlarsın.
final router = GoRouter(
routes: [
GoRoute(
path: '/',
builder: (context, state) => HomeScreen(),
),
],
);GoRouter, URL'ye göre doğru ekranı otomatik seçer ve geri/ileri düğmeleriyle uyumlu çalışır.
MaterialApp.router ile bağlama
GoRouter'ı uygulamaya bağlamak için MaterialApp.router kullanırsın. routerConfig parametresine GoRouter nesnesini verirsin; böylece uygulamanın tüm yönlendirmesi GoRouter üzerinden geçer.
MaterialApp.router(
routerConfig: router,
title: 'Uygulamam',
);Bu yöntem, Navigator.push çağrılarını GoRouter'ın bildirimsel yapısıyla değiştirir.
Uygulama Tek yollu GoRouter
routes adında bir liste tanımla: içinde path: '/' ve builder ile HomeScreen() döndüren bir GoRoute olsun. Bu listeyi GoRouter'a ver ve main içinde route sayısını yazdır.
Başlangıç kodu
import 'package:flutter/widgets.dart';
import 'package:go_router/go_router.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) => const SizedBox.shrink();
}
// routes listesi tanımla: bir GoRoute ekle
// path '/' ve builder HomeScreen döndürsün
// GoRouter'ı routes ile oluştur
void main() {
// routes uzunluğunu yazdır
}Örnek çözüm
import 'package:flutter/widgets.dart';
import 'package:go_router/go_router.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) => const SizedBox.shrink();
}
final routes = [
GoRoute(
path: '/',
builder: (context, state) => const HomeScreen(),
),
];
final router = GoRouter(routes: routes);
void main() {
print(routes.length);
}Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 GoRouter hangi navigation yaklaşımını sunar?
- Yalnızca setState ile state yönetimi
- Yalnızca sqflite veritabanı işlemleri
- C kodu derleme
- Bildirimsel (declarative) navigation 2.0 Doğru cevap
Açıklama: GoRouter yolları bildirimsel bir liste olarak tanımlar; bu navigation 2.0 yaklaşımıdır. State yönetimi, veritabanı ve C derleme GoRouter'ın konusu değildir.
2 GoRouter'ı tanımla
final router = ____(
routes: [
GoRoute(
path: '/',
builder: (context, state) => HomeScreen(),
),
],
);
final router = GoRouter(
routes: [
GoRoute(
path: '/',
builder: (context, state) => HomeScreen(),
),
],
);
Açıklama: GoRouter sınıfı routes listesi alır; her eleman bir GoRoute'dur. Navigator eski yaklaşımdır, Router çok genel bir sınıftır, MaterialApp router'ı bağlayan üst bileşendir.
3 GoRouter parçaları
| Kavram | Anlamı |
|---|---|
GoRouter |
bildirimsel yönlendirici |
routes |
yol listesi |
GoRoute |
tek yol tanımı |
MaterialApp.router |
GoRouter'ı bağlar |