Flutter는 Google에서 개발한 UI 프레임워크로서, 네비게이션 처리는 앱의 다양한 화면 간 전환과 관련된 기능입니다. Flutter에서는 다양한 방법을 통해 네비게이션을 처리할 수 있습니다. 이 글에서는 가장 일반적인 네비게이션 처리 방법에 대해 알아보겠습니다.
1. 기본 네비게이션
Flutter에서 가장 간단한 네비게이션 처리 방법은 Navigator
를 사용하는 것입니다.
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()),
);
위의 코드는 현재 화면에서 SecondScreen
으로 전환하는 코드입니다. Navigator.push
는 현재 컨텍스트와 목적지로 사용할 Route
를 받아 새로운 화면으로 전환하는 역할을 합니다.
또한, Navigator
를 사용하여 이전 화면으로 돌아가는 것도 가능합니다.
Navigator.pop(context);
Navigator.pop
은 현재 화면을 제거하고 이전 화면으로 돌아갑니다.
2. Named Routes를 이용한 네비게이션
Named Routes는 Flutter에서 화면 전환을 편리하게 관리하기 위한 방법입니다.
// MaterialApp 위젯에서 routes 프로퍼티를 설정하여 Named Routes를 정의한다.
routes: {
'/': (context) => HomeScreen(),
'/second': (context) => SecondScreen(),
},
위의 코드는 루트 경로(/
)와 /second
경로에 대한 화면을 정의한 예시입니다.
이렇게 Named Routes를 정의한 후에는 아래와 같이 경로를 이용하여 화면 전환을 할 수 있습니다.
Navigator.pushNamed(context, '/second');
Navigator.popAndPushNamed(context, '/');
위의 코드는 /second
로 이동하고, 현재 화면을 제거하고 루트 경로(/
)로 이동하는 예시입니다.
3. Route Arguments 전달하기
앱에서 화면 전환 시 데이터를 전달하려면 Route Arguments를 사용할 수 있습니다.
class SecondScreen extends StatelessWidget {
final String message;
SecondScreen({required this.message});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(message),
),
);
}
}
// 전환 시 데이터를 전달한다.
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondScreen(
message: 'Hello, Flutter!',
),
),
);
위의 코드는 SecondScreen
클래스에 message
라는 인자를 전달하여 데이터를 화면으로 전달하는 예시입니다.
이렇게 전달된 데이터는 해당 화면에서 사용할 수 있게 됩니다.
결론
Flutter에서는 다양한 방법을 통해 네비게이션 처리를 할 수 있습니다. 이 글에서는 기본 네비게이션, Named Routes를 사용한 네비게이션, 그리고 Route Arguments 전달 방법에 대해 알아보았습니다. 세부적인 동작 방식과 더 많은 기능들은 공식 문서를 참고하시기 바랍니다.
References:
- Flutter Navigation - https://flutter.dev/docs/development/ui/navigation
- Flutter Cookbook - Navigation - https://flutter.dev/docs/cookbook/navigation/navigation-basics