import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'ui/ana_pencere.dart'; import 'ui/sayfalar/_yer_tutucu.dart'; import 'ui/sayfalar/karakter_defteri_sayfasi.dart'; import 'ui/sayfalar/modeller_sayfasi.dart'; import 'ui/sihirbaz/karakter_yaratma_sihirbazi.dart'; /// Uygulama yönlendiricisi — go_router + ShellRoute. /// Her sayfa şimdilik [YerTutucuSayfa] olarak placeholder; başka ajanlar dolduracak. final GoRouter yonlendirici = GoRouter( initialLocation: '/', routes: [ ShellRoute( builder: (ctx, state, child) => AnaPencere(child: child), routes: [ GoRoute( path: '/', builder: (c, s) => const YerTutucuSayfa( baslik: 'Ana Sayfa', aciklama: 'Dashboard — film, klip ve karakter özetleri burada.', simge: Symbols.dashboard_rounded, ), ), // --- Film Stüdyosu --- GoRoute( path: '/film', builder: (c, s) => const YerTutucuSayfa( baslik: 'Film Stüdyosu', aciklama: 'Sahne sahne film üretim merkezi.', simge: Symbols.movie_filter_rounded, ), routes: [ GoRoute( path: 'yeni', builder: (c, s) => const YerTutucuSayfa( baslik: 'Yeni Film', aciklama: 'Film Sihirbazı.', simge: Symbols.movie_filter_rounded, ), ), GoRoute( path: ':id', builder: (c, s) => YerTutucuSayfa( baslik: 'Film Detay', aciklama: 'Film ID: ${s.pathParameters['id']}', simge: Symbols.movie_filter_rounded, ), ), ], ), // --- Müzik Klip --- GoRoute( path: '/muzik-klip', builder: (c, s) => const YerTutucuSayfa( baslik: 'Müzik Klip', aciklama: 'ACE-Step + InfiniteTalk ile klip üretim.', simge: Symbols.music_video_rounded, ), routes: [ GoRoute( path: 'yeni', builder: (c, s) => const YerTutucuSayfa( baslik: 'Yeni Müzik Klip', simge: Symbols.music_video_rounded, ), ), GoRoute( path: ':id', builder: (c, s) => YerTutucuSayfa( baslik: 'Müzik Klip Detay', aciklama: 'Klip ID: ${s.pathParameters['id']}', simge: Symbols.music_video_rounded, ), ), ], ), // --- Karakter Defteri --- GoRoute( path: '/karakter', builder: (c, s) => const KarakterDefteriSayfasi(), routes: [ GoRoute( path: 'yeni', builder: (c, s) => const KarakterYaratmaSihirbazi(), ), GoRoute( path: ':id', builder: (c, s) => YerTutucuSayfa( baslik: 'Karakter Detay', aciklama: 'Karakter ID: ${s.pathParameters['id']}', simge: Symbols.person_rounded, ), ), ], ), // --- Influencer --- GoRoute( path: '/influencer', builder: (c, s) => const YerTutucuSayfa( baslik: 'Influencer', aciklama: 'Influencer içeriği üretimi.', simge: Symbols.face_retouching_natural_rounded, ), routes: [ GoRoute( path: 'yeni', builder: (c, s) => const YerTutucuSayfa( baslik: 'Yeni Influencer İçeriği', simge: Symbols.face_retouching_natural_rounded, ), ), ], ), // --- Sanatçı --- GoRoute( path: '/sanatci', builder: (c, s) => const YerTutucuSayfa( baslik: 'Sanatçı', aciklama: 'ACE-Step ile şarkı üret, klip yap.', simge: Symbols.mic_external_on_rounded, ), routes: [ GoRoute( path: 'yeni', builder: (c, s) => const YerTutucuSayfa( baslik: 'Yeni Sanatçı Projesi', simge: Symbols.mic_external_on_rounded, ), ), ], ), // --- Görsel Üretim --- GoRoute( path: '/gorsel', builder: (c, s) => const YerTutucuSayfa( baslik: 'Görsel Üretim', aciklama: 'qwen_image / flux ile görsel üret.', simge: Symbols.image_rounded, ), ), // --- Serbest Video --- GoRoute( path: '/serbest-video', builder: (c, s) => const YerTutucuSayfa( baslik: 'Serbest Video', aciklama: 'Hızlı sahne sihirbazı — tüm i2v/t2v modelleri.', simge: Symbols.videocam_rounded, ), ), // --- Kuyruk --- GoRoute( path: '/kuyruk', builder: (c, s) => const YerTutucuSayfa( baslik: 'Kuyruk', aciklama: 'Aktif ve bekleyen joblar.', simge: Symbols.queue_rounded, ), ), // --- Geçmiş --- GoRoute( path: '/gecmis', builder: (c, s) => const YerTutucuSayfa( baslik: 'Geçmiş', aciklama: 'Üretilmiş filmler ve klipler.', simge: Symbols.history_rounded, ), ), // --- Şablonlar --- GoRoute( path: '/sablonlar', builder: (c, s) => const YerTutucuSayfa( baslik: 'Şablonlar', aciklama: 'Hazır + kullanıcı şablonları.', simge: Symbols.bookmark_rounded, ), ), // --- Modeller (WanGP katalog) --- GoRoute( path: '/modeller', builder: (c, s) => const ModellerSayfasi(), ), // --- Ayarlar --- GoRoute( path: '/ayarlar', builder: (c, s) => const YerTutucuSayfa( baslik: 'Ayarlar', aciklama: 'Köprü URL, çıktı klasörü, tema, dil.', simge: Symbols.settings_rounded, ), ), ], ), ], errorBuilder: (ctx, state) => Scaffold( body: Center( child: Padding( padding: const EdgeInsets.all(24), child: Column( mainAxisSize: MainAxisSize.min, children: [ const Icon(Symbols.error_rounded, size: 48, color: Colors.redAccent), const SizedBox(height: 12), Text('Sayfa bulunamadı', style: Theme.of(ctx).textTheme.headlineSmall), const SizedBox(height: 4), Text(state.uri.toString(), style: Theme.of(ctx).textTheme.bodySmall), const SizedBox(height: 16), FilledButton( onPressed: () => ctx.go('/'), child: const Text('Ana sayfaya dön'), ), ], ), ), ), ), );