728x90
플러터 프로젝트에 GetX를 도입하기 전, GetX에 대해 알아봅시다!
GetX 패턴에 대해 공식 레포에서 다음의 형태로 문서화 되어 있습니다. 이 내용을 바탕으로 블로그 글을 작성하였습니다.
- medium2
GetX Pattern
-
- 상태관리, 종속성 주입 및 route 관리 제공
- validation, media query, theme, languatge 등 기본 제공
구조
** 공통
[data]
1. model
: API를 통해 객체 또는 Json을 생성 할 때 쓰이는 class
2. repository (또는 service)
: entity에 해당, 단일 데이터에 접근하는 레이어
3. provider (obs)
: http 요청 또는 데이터베이스의 persistence를 만드는데 사용
1. 패키지 방식
- 간단하게, Routes / UI / Controller / Data 로 패키지를 구성하여 상태 관리
2. 모듈 방식 (큰 규모인 경우 추천)
- 각 화면을 기준으로 모듈로 분리
- 모듈은, bindings / controller / view으로 구성
1) bindings
- 종속성 주입을 분리하는 클래스
- 상태관리자와 함께 라우팅됨
class Binding extends Bindings {
@override
void dependencies() {
Get.lazyPut<Controller>(
() => Controller(),
);
}
}
2) controller
- 모든 비즈니스 로직이 들어가는 부분
- obs 변수 생성하는 곳
- 모든 컨트롤러는 하나의 저장소가 있어야 함
class Controller extends GetxController {
@override
void onInit() { // called immediately after the widget is allocated memory
fetchApi();
super.onInit();
}
@override
void onReady() { // called after the widget is rendered on screen
showIntroDialog();
super.onReady();
}
@override
void onClose() { // called just before the Controller is deleted from memory
closeStream();
super.onClose();
}
}
3) view
- widget 등 UI 부분
class View extends GetView<Controller> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('HomeView'),
centerTitle: true,
),
body: Center(
child: Text(
'HomeView is working',
style: TextStyle(fontSize: 20),
),
),
);
}
}
'✏️ > Flutter' 카테고리의 다른 글
[flutter] 새로운 Bloc Widget 두둥 등장! - BlocSelector (0) | 2021.08.20 |
---|---|
[flutter] BLoC v.6.xx > 7.1.x으로 되면서 달라진 점 (0) | 2021.08.12 |
[flutter][Getx] GetX pattern 겟✊-하기 (구조) (0) | 2021.07.29 |
[flutter][GetX] 플러터 프로젝트 GetX로 겟-하기 - 1편, CLI (0) | 2021.07.27 |
[flutter] fcm 알림 - background 뱃지 처리하기 (2편, badges) (0) | 2021.07.24 |