이 프로젝트는 Youtube '개발하는남자'의 '[ Flutter / 플러터 ] GetX 주요 기능 3가지 중 그 세번째 종속성관리 - 바인딩 #6' 강의를 참고했습니다.
종속성관리는 다른 말로하자면 의존성관리라고 해도 무방해요.
효율적인 메모리 관리를 위해서는
인스턴스를 시킨것을 어떻게 활용하고, 필요하지 않을 때는 인스턴스를 없애주는 과정이 필요해요.
저번 포스팅에서
인스턴스를 넘겨줄 때 binding에 대해서 찍먹 해봤어요.
Get.to() 와 함께 써서 페이지 내에서 페이지 이동을 할 때 binding을 썼었어요.
Get.to(
GetPutPage(),
binding: BindingsBuilder(() {
Get.put(DependencyController());
}),
);
binding을 활용하는 방법은 또 있어요.
맨처음 페이지 리스트에서 binding을 미리 설정해 두는 거에요.
다시말하면, binding은 라우트 세팅을 하는 곳인 GetPage 에서도 가능해요.
사용 방법은 이전과 동일해요.
main.dart
getPages: [
GetPage(name: '/', page: () => Home()),
GetPage(
name: '/binding',
page: () => BindingPage(),
binding: BindingsBuilder<CountControllerWithGetx>(() {
Get.put(() {
return CountControllerWithGetx();
});
}),
),
],
추가로 binding 부분을 따로 class로 만들어줘도 돼요.
Binding class를 만들어볼게요.
binding.dart
import 'package:flutter_getx_route_manage/CountControllerWithGetx.dart';
import 'package:get/instance_manager.dart';
class Binding implements Bindings {
void dependencies() {
Get.put(CountControllerWithGetx());
}
}
class 는 Bindings를 상속시켜주고,
dependencies 내에서 BindingBuilder 필요없이 Get.put() 부분만 해주면 돼요.
class를 GetPage 내에서 binding으로 불러와주기만 하면 이전과 같이 동작해요.
GetPage(
name: '/binding',
page: () => BindingPage(),
binding: Binding(),
),
정리를 하자면 binding 시점을 두 가지로 나눌 수 있겠네요!
여기까지 Binding에 대해서 알아봤어요. 👋