[Flutter] Stacked Services Navigator 정리
2023. 3. 19. 03:07ㆍDevelopers 공간 [Shorts]/Frontend
728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
Stacked_Services란 Stacked 패키지로 아키텍처를 구성했을 때 함께 사용할 수 있는 서비스로, 아래와 같은 편리한 기능들을 제공합니다.
- NavigationService: navigation 기능으로, 페이지 간 이동에 사용합니다.
- DialogService: dialog를 보여주기 위한 기능입니다.
- BottomSheetService: bottom sheet을 보여주기 위한 기능입니다.
- SnackbarService: snack bar를 보여주기 위한 기능입니다.
이 중 가장 기본적인 기능인 Navigation의 방법에 대해 정리하고자 합니다.
2. Why? (원인)
- X
3. How? (해결책)
- 기본적인 사용법 예시
- app.locator.dart에 replaceWithMyHomeView()라는 함수가 생성되고, 아래와 같이 페이지를 이동할 수 있습니다.
import 'package:stacked_services/stacked_services.dart';
import 'package:MyProject/app/app.locator.dart';
final NavigationService _navigationService = locator<NavigationService>();
_navigationService.replaceWithMyHomeView();
- NavigationService의 메서드들을 정리하면 아래와 같습니다.
- config : navigation 시의 셋팅을 만들어 줄 수 있습니다.
- back : navigation stack에서 pop을 하며 이동합니다.
- popUntil & popRepeated : navigation stack에서 pop을 특정한 조건을 활용해 하며 이동합니다.
- navigateTo & navigateToView & navigateWithTransition : navigation stack에 push를 해주며 이동합니다.
- replaceWith & replaceWithTransition : 현재의 Route를 새로운 곳으로 아예 바꿔줍니다. 주로 Landing Page이후에 사용합니다.
- clearStackAndShow & clearTillFirstAndShow & clearTillFirstAndShowView : navigation stack에서 clear를 특정한 조건을 활용해 하며 이동합니다. :
- pushNamedAndRemoveUntil : 해당 route를 push하고 predicate가 만족할 때까지의 stack을 clear합니다.
** Predicate : argument를 받아 boolean 값을 반환하는 함수형 인터페이스
ex) bool Function(Route<dynamic> route);
728x90
반응형
'Developers 공간 [Shorts] > Frontend' 카테고리의 다른 글
[Flutter] Stacked 패키지 Reactive Provider 설계하기 (0) | 2023.03.19 |
---|---|
[Flutter] 위젯을 이미지로 찍어내기 (0) | 2023.03.19 |
[Flutter] Future Builder를 활용해 Display하기 (0) | 2023.03.17 |
[Flutter] 미리 정해놓으면 좋은 것들 (Theme, Icon, Block, Sound...) (0) | 2023.03.12 |
[Flutter] List/GridView의 Item 만드는 다양한 방법 (0) | 2023.03.12 |