32일차 과제 링크 👉 32일차 과제
사용 목적
- 의존성 주입(Dependency Injection)
바인딩은 컨트롤러 인스턴스를 뷰에 주입하는 역할을 함
→ 뷰에서 컨트롤러에 접근하고 컨트롤러의 메서드를 호출하거나 상태를 가져올 수 있다- 상태 업데이트
컨트롤러의 상태가 변경될 때 뷰가 이를 감지하고 업데이트할 수 있음
→ 데이터의 양방향 바인딩을 구현하거나 상태 변화에 따라 UI를 업데이트하는 등의 작업을 수행할 수 있음- 라우트 설정
바인딩은 특정 라우트나 페이지에 컨트롤러를 연결하는 데 사용될 수 있음
→ 이를 통해 해당 라우트나 페이지에 진입할 때 컨트롤러가 자동으로 생성되고 초기화될 수 있음
장점
- 라이프사이클 관리, 상태 관리, 의존성 주입 등을 편리하게 활용할 수 있음
- 코드의 가독성과 유지보수성을 향상시키는 데 도움을 줌
initialBinding: BindingsBuilder(() {
Get.put(LoginController());
Get.put(MainController());
Get.put(AuthController());
...
})
GetPage(
name: LoginPage.route,
page: () => const LoginPage(),
binding: BindingsBuilder(() {
Get.put(LoginController());
}),
)
GetMaterialApp(
initialBinding: BindingsBuilder(() {
Get.put(LoginController());
}),
getPages: AppPages.pages,
home: LoginPage(),
);
class LoginPage extends GetView<LoginController> { // Stateless -> GetView<controller명>
...
TextField(
controller: controller.idController, // Get.find 없이 바로 controller 사용 가능
decoration: InputDecoration(
hintText: 'ID'
),
),
...
}
...
GetPage(
name: AppRoutes.login,
page: () => const LoginPage(),
binding: BindingsBuilder(() {
Get.put(LoginController());
})
),
...
GetMaterialApp(
getPages: AppPages.pages,
home: LoginPage(),
initialRoute: LoginPage.route,
)
class LoginPage extends GetView<LoginController> { // Stateless -> GetView<controller명>
...
TextField(
controller: controller.idController, // Get.find 없이 바로 controller 사용 가능
decoration: InputDecoration(
hintText: 'ID'
),
),
...
}
initialBinding: BindingsBuilder(() {
Get.lazyPut(() => LoginController());
}),
장점
- 개발자들 간의 의사소통과 코드의 가독성을 높이는 데 도움을 줌
- 소프트웨어 시스템 전체의 일관성을 유지할 수 있음
- 재사용 가능한 솔루션을 구축하여 개발 시간을 단축시킬 수 있음
Model-View-Controller
- Model
데이터와 비즈니스 로직을 담당
→ 애플리케이션의 상태와 데이터를 표현하고, 이를 조작하고 처리하는 책임을 가짐- View
사용자 인터페이스(UI)를 표현
→ 모델의 데이터를 시각적으로 표현하고 사용자 입력을 받아 컨트롤러로 전달
→ 주로 화면에 표시되는 요소들을 구성하고, 사용자와의 상호작용을 처리함- Controller
모델과 뷰를 연결하고 상호작용을 조정
→ 사용자 입력을 받아 모델을 업데이트하고, 모델의 변화를 뷰에 반영
→ 비즈니스 로직을 처리하고 애플리케이션의 흐름을 제어
특징
- 하나의 인스턴스
싱글톤 클래스는 오직 하나의 인스턴스만을 생성
→ 인스턴스는 클래스 내부에서 관리되며, 외부에서는 직접 생성할 수 없음- 전역적인 접근
싱글톤 인스턴스는 전역적으로 접근 가능함
→ 다른 클래스나 모듈에서 인스턴스에 접근할 수 있으며 동시에 같은 인스턴스에 접근할 수 있음- 지연된 초기화
싱글톤 인스턴스는 필요한 시점에서 생성됨
→ 처음 사용되기 전까지는 인스턴스가 생성되지 않음
→ 자원의 낭비를 방지할 수 있음
class Singleton {
static Singleton _instance;
// private 생성자
Singleton._();
factory Singleton.getInstance() {
if (_instance == null) {
_instance = Singleton._();
}
return _instance;
}
// 싱글톤 인스턴스의 기능과 데이터
}
_instance
가 null인 경우에만 인스턴스를 생성하고, 그렇지 않은 경우에는 이미 생성된 인스턴스를 반환 → 싱글톤 클래스의 인스턴스는 오직 하나만 생성되고 전역적으로 접근할 수 있음(android studio) dart json serialization plugin
(윈도우 기준) alt + insert
단축키로 생성자, toMap - fromMap(), getter - setter 등등 생성 가능 클릭 몇번으로 toMap - fromMap이 만들어진다니
세상에.
플러그인 설치하고 광명찾앗습니다