Navigation & Routing

June 02, 2026 1 min read

Flutter manages screens as a stack via the Navigator.

Push & pop

// go to a new screen
Navigator.push(
  context,
  MaterialPageRoute(builder: (_) => DetailScreen(id: 42)),
);
// go back
Navigator.pop(context);

Returning data

final result = await Navigator.push<String>(context,
  MaterialPageRoute(builder: (_) => PickerScreen()));
// PickerScreen calls Navigator.pop(context, 'chosen value');

For bigger apps, packages like go_router give URL-based, declarative routing.

Summary

Navigator.push/pop moves between screens and can return data. Use go_router for larger, URL-driven navigation.