CodeBlanks Logo Icon CodeBlanks

Meydan okuma 3

Flutter web için URL stratejili router uygulaması yaparsın.

Web URL stratejisi ve GoRouter

Flutter web'de varsayılan URL'ler # işareti içerir. setUrlStrategy(PathUrlStrategy()) ile bunu kaldırıp temiz URL'lere geçersin. GoRouter ile rota yapılandırmasını bildirimli tanımlarsın; her GoRoute bir yol ve bir builder alır.

void main() {
  setUrlStrategy(PathUrlStrategy());
  runApp(MyApp());
}

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

Uygulama İki rotalı GoRouter

İki GoRoute tanımla: '/' ve '/settings'. Her birinin builder'ı SizedBox döndürsün. GoRouter oluştur. main içinde rota sayısını yazdır.

Başlangıç kodu

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

// İki rota tanımla: kök ve ayarlar
// Her builder SizedBox döndürsün
// GoRouter oluştur
// main: rota sayısını yazdır

void main() {
}

Örnek çözüm

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

final routes = [
  GoRoute(
    path: '/',
    builder: (context, state) => const SizedBox(),
  ),
  GoRoute(
    path: '/settings',
    builder: (context, state) => const SizedBox(),
  ),
];

final router = GoRouter(routes: routes);

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

Beklenen çıktı

2

Uygulama Parametreli rota

İki GoRoute tanımla: '/' ve '/item/:id'. İkinci rotanın builder'ında state.pathParameters['id'] ile id al ve Text widget'ında göster. GoRouter oluştur. main içinde son rotanın yolunu yazdır.

Başlangıç kodu

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

// İki rota: kök ve öğe detayı (id parametreli)
// Detay rotasında id'yi al ve metin göster
// GoRouter oluştur
// main: son rotanın yolunu yazdır

void main() {
}

Örnek çözüm

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

final routes = [
  GoRoute(
    path: '/',
    builder: (context, state) => const SizedBox(),
  ),
  GoRoute(
    path: '/item/:id',
    builder: (context, state) {
      final id = state.pathParameters['id'];
      return SizedBox(child: Text(id!));
    },
  ),
];

final router = GoRouter(routes: routes);

void main() {
  print(routes.last.path);
}

Beklenen çıktı

/item/:id

Soru ve cevaplar

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

1 PathUrlStrategy ne yapar?

  • URL'ye # işareti ekler
  • Rota önbelleğini temizler
  • URL'deki # işaretini kaldırır Doğru cevap
  • Hot reload'u etkinleştirir

Açıklama: PathUrlStrategy, hash (#) yerine yol tabanlı URL'ler kullanır; böylece adres çubuğu temiz görünür.

2 setUrlStrategy çağrısı

Soru
void main() {
  ____(PathUrlStrategy());
  runApp(MyApp());
}
Cevap
void main() {
  setUrlStrategy(PathUrlStrategy());
  runApp(MyApp());
}

Açıklama: setUrlStrategy, Flutter web'de URL stratejisini belirler; PathUrlStrategy ile hash kaldırılır.

3 Web yönlendirme parçaları

Kavram Anlamı
PathUrlStrategy URL'deki # işaretini kaldırır
setUrlStrategy URL stratejisini ayarlar
GoRoute Tek bir rota tanımlar
GoRouter Tüm rotaları yönetir

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