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.