go_router və deep link
Navigator 1.0 imperativdir: "bu ekranı aç", "geri qayıt". Web URL-ləri, deep link və mürəkkəb yönləndirmə (redirect) lazım olanda bu model çətinləşir — çünki tətbiqin vəziyyəti ilə URL arasında əlaqə əl ilə saxlanılır.
Declarative routing (Navigator 2.0 ideyası) bunu tərsinə çevirir: URL həqiqətin mənbəyidir, ekran stack-i ondan hesablanır. Praktikada bunun ən çox istifadə olunan realizasiyası `go_router` paketidir, çünki Navigator 2.0-ın xam API-si çox mürəkkəbdir.
go_router-ın üç əsas faydası:
- Route iyerarxiyası — uşaq route-lar təyin olunur və deep link gələndə arxadakı ekranlar avtomatik qurulur, yəni geri düyməsi məntiqli işləyir
- `redirect` — mərkəzi yönləndirmə: istifadəçi giriş etməyibsə, qorunan route-dan login-ə yönləndirmək bir yerdə yazılır, hər ekranda yox
- Tipli parametrlər —
path: '/order/:id'vəstate.pathParameters['id']; kod generasiyası ilə tam tip təhlükəsizliyi də mümkündür
Interview ipucu. "Navigator 1.0 və 2.0 fərqi nədir?" sualına "biri köhnə, biri yenidir" demə. Fərq imperativ vs deklarativ-dir: birincidə sən əmr verirsən, ikincidə vəziyyəti (URL-i) təsvir edirsən və stack ondan hesablanır. Praktik cavabı da əlavə et: xam Navigator 2.0 API-si mürəkkəb olduğu üçün real layihələrdə go_router istifadə olunur.
📚 Mənbələr və sənədlər
- Deep linkingrəsmidocs.flutter.dev
- go_router paketirəsmipub.dev
Redirect, uşaq route-lar və ShellRoute nümunələri README-də verilib.
- Naviqasiya və routingrəsmidocs.flutter.dev