Sparround

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ə edir
  • Navigator.pop(context) — geri qayıdır; ikinci arqumentlə dəyər qaytarmaq olur
  • pushReplacement — 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:

  • KonstruktorMaterialPageRoute(builder: (_) => DetailScreen(id: order.id)). Tip-təhlükəsizdir və ilk seçim olmalıdır
  • Named route + argumentsNavigator.pushNamed(context, '/detail', arguments: id). Mərkəzi route cədvəli verir, amma arguments Object? 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