앞서 종속성에 대해 알아보고 크게 Get.put과 Get.lazyPut의 차이에 대해 알아보았습니다.
이번 글에서는 GetX에서 자동 종속성 관리인 Binding에 대해 알아보겠습니다.
Binding은 GetX에서 종속성 주입을 자동으로 관리하는 기능으로 페이지 전환 시 필요한 컨트롤러를 자동으로 등록/해제해주므로, 더 깔끔하고 효율적인 코드를 작성할 수 있습니다.
❌ Get.put()을 직접 여러 번 쓰면 코드 중복 발생
❌ 컨트롤러 삭제(Get.delete())를 직접 처리해야 함
✅ Binding을 쓰면 페이지 진입 시 자동 등록, 이탈 시 자동 제거
// controller.dart
class HomeController extends GetxController {
var count = 0.obs;
void increment() => count++;
}
// binding.dart
class HomeBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<HomeController>(() => HomeController());
}
}
// main.dart
GetMaterialApp(
initialRoute: '/',
getPages: [
GetPage(
name: '/',
page: () => HomePage(),
binding: HomeBinding(),
),
],
);
페이지 전환 시 자동으로 HomeController가 생성되고, 페이지가 제거되면 메모리에서 정리됩니다.
| 상황 | 설명 |
|---|---|
| View와 Controller가 1:1 대응 | 각 페이지마다 컨트롤러 하나씩 있을 때 |
| 컨트롤러를 자동으로 관리하고 싶을 때 | Get.put() / Get.delete() 없이 깔끔하게 관리 |
| 유지보수성을 높이고 싶을 때 | 코드가 명확하게 분리됨 (페이지 단위로 관리) |