CodeBlanks Logo Icon CodeBlanks

GoRouter nedir?

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

main.dart
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

main.dart
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

Soru
final router = ____(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => HomeScreen(),
    ),
  ],
);
Cevap
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

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