GoRouter, Flutter'ın resmi olarak önerilen routing paketidir. URL tabanlı navigasyon, derin bağlantılar, auth guard'lar ve iç içe geçmiş rotalar - hepsi temiz ve okunabilir bir kod ile sağlanmaktadır.
Temel Kurulum
GoRouter'ı kullanmaya başlamadan önce, go_router paketini projenize eklemelisiniz. Ardından, GoRouter sınıfını oluşturup, rotalarınızı tanımlayabilirsiniz.
final router = GoRouter(
initialLocation: '/',
routes: [
GoRoute(
path: '/',
builder: (context, state) => const HomePage(),
),
GoRoute(
path: '/profile/:userId',
builder: (context, state) {
final userId = state.pathParameters['userId']!;
return ProfilePage(userId: userId);
},
),
],
);Navigasyon
GoRouter, navigasyon için çeşitli yöntemler sağlar. push yöntemi, back stack'i korurken yeni bir sayfa açar. go yöntemi, geçmişini değiştirir. push yöntemiyle path parametreleri ve sorgu parametreleri de gönderebilirsiniz.
// Push (keeps back stack)
context.push('/settings');
// Go (replaces history)
context.go('/home');
// With path parameters
context.push('/profile/user-123');
// With query parameters
context.push('/search?q=flutter&tag=dart');Auth Guard
GoRouter, auth guard'lar için bir yöntemler sağlar. redirect parametresi, kullanıcıların yetkisine göre yönlenmesini sağlar.
final router = GoRouter(
refreshListenable: authNotifier,
redirect: (context, state) {
final isAuthenticated = authNotifier.isAuthenticated;
final isGoingToLogin = state.matchedLocation == '/login';
if (!isAuthenticated && !isGoingToLogin) {
return '/login?redirect=${state.uri}';
}
if (isAuthenticated && isGoingToLogin) {
return '/';
}
return null;
},
routes: [
GoRoute(path: '/login', builder: (_, __) => const LoginPage()),
],
);
## Sonuç
GoRouter, Flutter uygulamalarında navigasyonu kontrol altına almak için güçlü bir araçtır. URL tabanlı navigasyon, auth guard'lar, iç içe geçmiş rotalar ve Riverpod entegrasyonu gibi özellikleriyle, herhangi bir Flutter uygulaması için ideal bir seçimdir.Yapay zeka özeti
Flutter uygulamalarında navigasyonu kontrol altına almak için GoRouter kullanın. Bu makale, GoRouter'ın temel özelliklerini ve kullanımını anlatıyor.