Navigator 기본 개념
- 스택(Stack) 구조
- 새로운 화면을 열면 push → 스택에 쌓임
- 뒤로 가면 pop → 스택에서 제거됨
Navigator 기본 문법
1. 화면 이동 (push)
Navigator.push( context, MaterialPageRoute(builder: (context) => SecondPage()), );
👉 SecondPage()가 현재 화면 위로 쌓이고, 뒤로 가면 자동으로 이전 화면이 나타납니다.
2. 화면 닫기 (pop)
👉 스택에서 현재 화면을 제거하고 이전 화면으로 돌아갑니다.
3. 데이터 전달하기
(1) 화면으로 값 넘기기
Navigator.push( context, MaterialPageRoute(builder: (context) => DetailPage(data: "Hello")), );
(2) 화면에서 값 반환하기
Navigator.pop(context, "결과 데이터");
(3) 호출한 곳에서 결과 받기
final result = await Navigator.push( context, MaterialPageRoute(builder: (context) => SecondPage()), );
print(result); // "결과 데이터"
4. 이름 기반 라우팅 (Named Route)
(1) MaterialApp에 라우트 등록
MaterialApp( initialRoute: '/', routes: { '/': (context) => HomePage(), '/second': (context) => SecondPage(), }, );
(2) 이동 & 닫기
// 이동 Navigator.pushNamed(context, '/second');
// 뒤로가기 Navigator.pop(context);
5. 기존 화면 교체 (pushReplacement)
현재 화면을 새로운 화면으로 교체 (뒤로 가기 시 이전 화면으로 돌아갈 수 없음).
Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => LoginPage()), );
6. 모든 화면 닫고 이동 (pushAndRemoveUntil)
스택에 쌓여 있는 모든 화면을 제거하고 새 화면만 남김.
👉 로그인 후 홈 화면으로 가고, 로그인 화면으로 못 돌아가게 만들 때 자주 씀.
7. 여러 화면 관리 (Navigator 2.0, Router)
복잡한 네비게이션은 Navigator 2.0 / go_router / auto_route 같은 패키지를 사용합니다.
Flutter 공식 권장 방식은 go_router.
정리
- push → 새 화면 열기
- pop → 현재 화면 닫기
- pushReplacement → 현재 화면 교체
- pushAndRemoveUntil → 기존 화면 모두 닫고 새 화면으로 이동
- 데이터 전달/반환 가능 (await Navigator.push)
- 규모가 커지면 Named Route 또는 go_router 사용
'프로그래밍 > Flutter' 카테고리의 다른 글
| Flutter에서 App ID 변경방법 (0) | 2025.09.10 |
|---|---|
| Flutter의 기본흐름 구조 (0) | 2025.09.02 |
| Flutter 레이아웃 위젯 정리 (0) | 2025.09.02 |
| Flutter에서 앱아이콘(AppIcon) 설정 (0) | 2025.09.02 |
| 외부에서 AppBar Title 변경하기 (0) | 2025.09.02 |