Flutter에서 Navigator.pushNamed는 이름이 지정된 경로(named route)를 사용하여 새 화면으로 이동하는 데 사용됩니다. 이 방식은 경로 이름을 기반으로 화면을 탐색하기 때문에 앱의 라우트를 더 구조적으로 관리할 수 있게 해줍니다.
MaterialApp 위젯에서 routes 속성을 사용해 이름과 위젯을 연결합니다.Navigator.pushNamed를 호출하여 정의된 이름을 기반으로 화면을 전환합니다.void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => HomeScreen(),
'/second': (context) => SecondScreen(),
},
);
}
}
class HomeScreen extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Home')),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, '/second');
},
child: Text('Go to Second Screen'),
),
),
);
}
}
class SecondScreen extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Second')),
body: Center(child: Text('This is the second screen')),
);
}
}
Navigator.pushNamedFuture<T?> pushNamed<T extends Object?>(
BuildContext context,
String routeName, {
Object? arguments,
})
context: 현재 위젯의 빌드 컨텍스트.routeName: 이동할 경로 이름 (e.g., '/second').arguments: 화면 간 데이터를 전달할 때 사용 (선택 사항).화면 간 데이터를 전달하려면 arguments를 활용합니다.
Navigator.pushNamed(
context,
'/second',
arguments: 'Hello from Home Screen!',
);
class SecondScreen extends StatelessWidget {
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments as String;
return Scaffold(
appBar: AppBar(title: Text('Second Screen')),
body: Center(child: Text(args)),
);
}
}
onGenerateRoute와 onUnknownRoute를 함께 사용하여 동적 경로나 에러 처리를 구현하는 것이 좋습니다.