이번에 토이프로젝트를 하나 진행하면서 알게된 GetX 프레임워크에서 사용하는 Get.put, Get.find에 대한 것을 정리하고자 이렇게 포스팅을 합니다.
Get.put과 Get.find는 의존성주입(Dependency Injection)과 상태 관리를 위해 사용되는 두 가지 핵심 메서드 입니다.
이들의 차이점을 기능, 사용 시점, 동작 방식 측면에서 한번 정리해볼께요 .
example
class ThemeController extends GetxController {
RxBool isDarkMode = false.obs;
void toggleTheme(bool value) => isDarkMode.value = value;
}
void main() {
Get.put(ThemeController()); // ThemeController 인스턴스 생성 및 등록
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(home: HomePage());
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final ThemeController controller = Get.find(); // 등록된 인스턴스 가져오기
return Scaffold(
body: Obx(() => Switch(
value: controller.isDarkMode.value,
onChanged: controller.toggleTheme,
)),
);
}
}
항목 | Get.put | Get.find |
기능 | 인스턴스를 생성하고 등록 | 등록된 인스턴스를 검색 |
인스턴스 생성여부 | 새 인스턴스 생성 | 생성하지 않음, 기존 인스턴스 반환 |
호출 시점 | 페이지 진입시 | 필요할 때 찾아서 사용 |
오류 발생조건 | 동일 타입 중복 등록시 덮어씀 | 등록되지 않은 것을 호출할때 |
태그 사용 | tag로 구분해 여러 인스턴스 등록 가능 | tag로 특정 인스턴스 검색 가능 |
사용 목적 | 의존성 주입 시작 | 의존성 재사용 |
tag로 사용하는 것은 저도 해본적이 없어서 예시만 가져와 볼께요 .
void main() {
Get.put(ThemeController(), tag: 'light'); // 라이트 테마 컨트롤러
Get.put(ThemeController(), tag: 'dark'); // 다크 테마 컨트롤러
runApp(MyApp());
}
class HomePage extends StatelessWidget {
final lightController = Get.find<ThemeController>(tag: 'light');
final darkController = Get.find<ThemeController>(tag: 'dark');
@override
Widget build(BuildContext context) => Scaffold(body: Text('Dual Theme'));
}
오랜만에 Flutter 를 가지고 토이 프로젝트를 진행하면서 한번더 정리해보는 시간이었습니다.
이번에 앱을 또 출시하게 되면 포스팅하겠습니다.
다운로드와 많은 응원 부탁드릴께요 ^^
[Version] Flutter 에서 App 쪽 version 에 대한 정리 (0) | 2025.04.07 |
---|---|
[MacOS Sequoia] Xcode build error 에 대한 소견 (0) | 2025.03.07 |
[Flutter] Drawer 아이콘 색상 변경하기 (0) | 2024.08.19 |
[Flutter] Unknown feature SUPRESS_ERROR_PAGE Error (0) | 2024.08.12 |
Flutter 3.22.0-5.0.pre.29 bug (0) | 2024.06.14 |