CodeBlanks Logo Icon CodeBlanks

GoRoute

GoRoute ile yol tanımlamayı öğrenirsin.

GoRoute ile yol tanımlama

GoRoute, GoRouter'ın yol listesindeki tek yol tanımıdır. path parametresi URL yolunu, builder parametresi ise o yola girildiğinde gösterilecek ekranı belirler. builder, (BuildContext context, GoRouterState state) imzasına sahiptir ve bir Widget döndürür.

GoRoute(
  path: '/ayarlar',
  builder: (context, state) => AyarlarScreen(),
)

Birden fazla GoRoute

Bir GoRouter'ın routes listesi birden fazla GoRoute içerebilir. Her GoRoute'un kendi path'i ve builder'ı vardır. Kullanıcı URL'ye göre ilgili builder çağrılır.

GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => HomeScreen(),
    ),
    GoRoute(
      path: '/ayarlar',
      builder: (context, state) => AyarlarScreen(),
    ),
  ],
);

Uygulama İki yollu GoRouter

routes listesi tanımla: iki GoRoute içersin. İlki path: '/' ile HomeScreen(), ikincisi path: '/ayarlar' ile AyarlarScreen() döndürsün. 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();
}

class AyarlarScreen extends StatelessWidget {
  const AyarlarScreen({super.key});
  @override
  Widget build(BuildContext context) => const SizedBox.shrink();
}

// routes listesi tanımla: iki GoRoute ekle
// '/' -> HomeScreen, '/ayarlar' -> AyarlarScreen
// 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();
}

class AyarlarScreen extends StatelessWidget {
  const AyarlarScreen({super.key});
  @override
  Widget build(BuildContext context) => const SizedBox.shrink();
}

final routes = [
  GoRoute(
    path: '/',
    builder: (context, state) => const HomeScreen(),
  ),
  GoRoute(
    path: '/ayarlar',
    builder: (context, state) => const AyarlarScreen(),
  ),
];

final router = GoRouter(routes: routes);

void main() {
  print(routes.length);
}

Beklenen çıktı

2

Soru ve cevaplar

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

1 GoRoute'ın builder parametresi ne döndürür?

  • Bir Widget Doğru cevap
  • Bir Map
  • Bir Future
  • Bir int

Açıklama: builder, bir Widget döndürür; bu widget o yola girildiğinde ekranda gösterilir. Future async işlemler içindir, int sayıdır, Map veri yapısıdır.

2 GoRoute path parametresi

Soru
GoRoute(
  ____,
  builder: (context, state) => AyarlarScreen(),
)
Cevap
GoRoute(
  path: '/ayarlar',
  builder: (context, state) => AyarlarScreen(),
)

Açıklama: GoRoute'un URL yolunu belirten parametresi path'tir. url, route ve page GoRoute'un parametre adları değildir.

3 GoRoute parçaları

Kavram Anlamı
path URL yolu
builder ekran oluşturucu
routes yol listesi
GoRouterState yol durumu nesnesi

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