Naviqasiya əsasları
Flutter-də naviqasiya stack (yığın) modelidir: Navigator ekranları üst-üstə yığır, pop isə ən üstdəkini götürür.
Navigator.push(context, MaterialPageRoute(builder: ...))— yeni ekran əlavə edirNavigator.pop(context)— geri qayıdır; ikinci arqumentlə dəyər qaytarmaq olurpushReplacement— cari ekranı əvəz edir (məsələn login → home)pushAndRemoveUntil— stack-i təmizləyib yeni ekran açır (çıxış edəndə)
push `Future` qaytarır və bu, çox vaxt gözdən qaçır: həmin future ekran bağlananda pop-a verilən dəyərlə tamamlanır.
Ekranlar arasında data ötürmək üçün iki yol var:
- Konstruktor —
MaterialPageRoute(builder: (_) => DetailScreen(id: order.id)). Tip-təhlükəsizdir və ilk seçim olmalıdır - Named route + arguments —
Navigator.pushNamed(context, '/detail', arguments: id). Mərkəzi route cədvəli verir, ammaargumentsObject?tipindədir və cast tələb edir
İkinci variantın tip təhlükəsizliyi olmaması real problemdir — məhz buna görə go_router kimi paketlər tipli parametrlər təklif edir.
Interview ipucu. push-un Future qaytarması ilə bağlı sual tez-tez verilir: "seçim ekranından nəticəni necə alırsan?" Cavab: final result = await Navigator.push<Item>(...) və ikinci ekranda Navigator.pop(context, selectedItem). Nəticə null ola bilər — istifadəçi geri düyməsi ilə çıxarsa — və bunu qeyd etmək cavabı tamamlayır.
📚 Mənbələr və sənədlər
- Naviqasiya və routingrəsmidocs.flutter.dev
- Navigator classrəsmiapi.flutter.dev
`push`, `pop`, `pushReplacement` və nəticə qaytarma sənəddə nümunələrlə verilib.
- App arxitekturası bələdçisirəsmidocs.flutter.dev