상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 다트에서 Flutter의 Navigator를 사용하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Flutter에서 Navigator는 화면 간의 전환을 관리하는 데 사용되는 중요한 도구입니다. Navigator는 스택 기반의 구조를 가지고 있어, 사용자가 이전 화면으로 돌아갈 수 있도록 도와줍니다. 이 글에서는 Flutter의 Navigator를 사용하는 방법에 대해 자세히 설명하겠습니다. 1. 기본 개념 Navigator는 `MaterialApp` 위젯의 일부로, 앱의 <a href='https://sangseek.com/sangseeks/라우팅/ko'>라우팅</a>을 관리합니다. 각 화면은 `Route` 객체로 표현되며, Navigator는 이러한 Route 객체를 스택에 쌓아 화면 전환을 처리합니다. 2. Navigator 사용하기 2.1. 기본적인 화면 전환 Flutter에서 화면을 전환하려면 `Navigator.push` 메서드를 사용합니다. 이 메서드는 새로운 Route를 스택에 추가하여 화면을 전환합니다. ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: FirstScreen(), ); } } class FirstScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('First Screen')), body: Center( child: ElevatedButton( onPressed: () { Navigator.push( context, Ma<a href='https://sangseek.com/sangseeks/terialPageRoute/ko'>terialPageRoute</a>(builder: (context) => SecondScreen()), ); }, child: Text('Go to Second Screen'), ), ), ); } } class SecondScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Second Screen')), body: Center( child: ElevatedButton( onPressed: () { Navigator.pop(context); }, child: Text('Back to First Screen'), ), ), ); } } ``` 위의 예제에서 `FirstScreen`에서 버튼을 클릭하면 `SecondScreen`으로 이동합니다. `SecondScreen`에서 다시 버튼을 클릭하면 `FirstScreen`으로 돌아갑니다. 2.2. Named Routes Flutter에서는 Named Routes를 사용하여 더 복잡한 라우팅을 관리할 수 있습니다. Named Routes는 <a href='https://sangseek.com/sangseeks/문자열/ko'>문자열</a>을 사용하여 Route를 정의하고, 이를 통해 화면 전환을 수행합니다. ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( initialRoute: '/', routes: { '/': (context) => FirstScreen(), '/second': (context) => SecondScreen(), }, ); } } class FirstScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('First Screen')), body: Center( child: ElevatedButton( onPressed: () { Navigator.pushNamed(context, '/second'); }, child: Text('Go to Second Screen'), ), ), ); } } class SecondScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Second Screen')), body: Center( child: ElevatedButton( onPressed: () { Navigator.pop(context); }, child: Text('Back to First Screen'), ), ), ); } } ``` 위의 예제에서는 `routes` 속성을 사용하여 Named Routes를 정의했습니다. `Navigator.pushNamed` 메서드를 사용하여 화면을 전환합니다. 3. 데이터 전달하기 화면 간에 데이터를 전달하려면, `Navigator.push` 메서드에 전달할 데이터를 포함할 수 있습니다. 예를 들어, `SecondScreen`에 문자열 데이터를 전달할 수 있습니다. ```dart class FirstScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('First Screen')), body: Center( child: ElevatedButton( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => SecondScreen(data: 'Hello from First Screen!'), ), ); }, child: Text('Go to Second Screen'), ), ), ); } } class SecondScreen extends StatelessWidget { final String data; SecondScreen({required this.data}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Second Screen')), body: Center( child: Text(data), ), ); } } ``` 4. 화면 전환 애니메이션 Flutter에서는 기본적으로 화면 전환 시 애니메이션이 적용됩니다. 하지만 커스텀 애니메이션을 적용하고 싶다면 `PageRouteBuilder`를 사용할 수 있습니다. ```dart Navigator.push( context, PageRouteBuilder( pageBuilder: (context, animation, secondaryAnimation) => SecondScreen(), transitionsBuilder: (context, animation, secondaryAnimation, child) { c<a href='https://sangseek.com/sangseeks/onst/ko'>onst</a> begin = <a href='https://sangseek.com/sangseeks/Offset/ko'>Offset</a>(1.0, 0.0); const end = Offset.zero; const curve = Curves.easeInOut; var tween = Tween(begin: begin, end: end).chain(CurveTween(curve: curve)); var offsetAnimation = animation.drive(tween); return SlideTransition( position: offsetAnimation, child: child, ); }, ), ); ``` 위의 예제에서는 `SlideTransition`을 사용하여 화면이 오른쪽에서 왼쪽으로 슬라이드되는 애니메이션을 구현했습니다. 5. 결론 Flutter의 Navigator는 화면 간의 전환을 관리하는 강력한 도구입니다. 기본적인 화면 전환, Named Routes, 데이터 전달, 커스텀 애니메이션 등 다양한 기능을 제공하여 개발자가 원하는 방식으로 앱을 구성할 수 있도록 돕습니다. 이러한 기능들을 잘 활용하면 사용자 경험을 향상시키는 데 큰 도움이 될 것입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기