

Route와 Navigator
Route는 Flutter 앱에서 화면을 나타내는 객체이다.
각 Route는 해당 화면의 위젯 트리를 빌드하는 역할을 한다.
Navigator는 Route들을 관리하고 화면 간 이동을 제어하는 위젯이다.
Navigator는 Route들을 Stack 자료구조로 관리한다. Stack은 Last-In-First-Out(LIFO) 방식으로 동작하며, 가장 최근에 추가된 Route가 가장 먼저 제거된다.
Stack 기본 개념
하얀색 상자가 Stack이다.
1이 당연히 제일 먼저 들어온다.
1이 들어오고서 2가 들어왔는데 1 위에 쌓였다.
그 다음에 3, 4도 이미지처럼 계속 쌓였다.
무언가 하나 빼야지 라고 하면, 가장 위에 있었던 5번 데이터가 빠진다.
그거를 Pop이라고 한다.
데이터를 넣어야지 하면은 또 이 기존의 데이터가 있는 곳 위에 6번 데이터가 쌓여버린다.
이것을 Push라고 한다.
그래서 데이터를 넣는 것을 Push라고 하고 데이터를 빼는 거를 Pop이라고 한다.
정리하자면, 스택 같은 경우에는 가장 마지막에 들어온 게 먼저 나간다.
Stack(LIFO) 동작 방식
Flutter에서 새로운 Route를 열면 해당 Route는 Stack의 top에 추가된다.
사용자가 뒤로 가기 버튼을 누르면 Stack의 top에 있는 Route가 제거되고, 그 아래에 있던 Route가 화면에 보여진다.
예를 들어, 다음과 같은 순서로 Route를 열었다고 가정해보자.
- HomeRoute
- ProductListRoute
- ProductDetailRoute
이 상태에서 Stack은 다음과 같이 구성된다.
TOP -> ProductDetailRoute
ProductListRoute
HomeRoute
사용자가 뒤로 가기 버튼을 누르면 ProductDetailRoute가 제거되고 ProductListRoute가 화면에 보여진다.
Queue 기본 개념
하얀색 상자가 Queue이다.
숫자 데이터가 왼쪽에서 들어가고 오른쪽으로 나간다.
밀리는 형태의 구조이기 때문에 숫자를 보면 데이터 1, 2, 3, 4, 5, 6이 들어가는 곳에서 반대쪽으로 밀어내고 있다.
들어갈 때를 Enqueue라고 하고 나갈 때를 Dequeue라고 한다.
데이터 7이 들어올 때, 데이터 1은 첫 번째로 들어왔기 때문에 첫 번째로 나간다.
흔히 생각하는 줄 서기랑 비슷하다고 생각하면 된다.
식당 앞에서 줄을 서고 있으면 먼저 줄 선 사람이 식당에 들어가고 늦게 온 사람이 줄의 맨 끝에서 기자리는 것과 같다.
Queue(FIFO) 동작 방식
Flutter의 Navigator 2.0에서는 Route를 Stack 뿐만 아니라 Queue 형태로도 관리할 수 있다.
Queue는 First-In-First-Out(FIFO) 방식으로 동작하며, 가장 먼저 추가된 Route가 가장 먼저 제거된다.
Queue 방식은 웹 브라우저의 동작과 유사하다.
새로운 Route를 열면 Queue의 rear에 추가되고, 사용자가 뒤로 가기 버튼을 누르면 Queue의 rear에서 Route가 제거된다.
- HomeRoute
- ProductListRoute
- ProductDetailRoute
예를 들어, 위와 같은 순서로 Route를 열었다고 가정하면 Queue는 다음과 같이 구성된다.
FRONT -> HomeRoute
ProductListRoute
ProductDetailRoute <- REAR
사용자가 뒤로 가기 버튼을 누르면 ProductDetailRoute가 제거되고 ProductListRoute가 화면에 보여진다.
'Flutter 초급' 카테고리의 다른 글
Slider (0) | 2024.09.13 |
---|---|
Flutter에서의 위젯 인스턴스 생성 (0) | 2024.09.13 |
Align (0) | 2024.09.10 |
Constraint, 레이아웃의 4대 원칙 (0) | 2024.09.10 |
DatePicker (0) | 2024.09.10 |

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!