[GetX 기능 정리] 4. 의존성 주입
Get X의 Dependency Injection, 의존성 주입에 대해 알아보자.
바인딩을 이용하여 인스턴스화 시키는 4가지 방법이 있다.
Dependency Controller
class DependancyController extends GetxController {
@override
Widget build(BuildContext context) {
의존성 관리 페이지
class DependancyManagePage extends StatelessWidget {
const DependancyManagePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body:Column(
children: [
Get put 방식 이용
MaterialButton( child:Text("Get Put 방식"), onPressed: (){ Get.to( GetPut(), //필요한 의존성 주입을 어떻게 할 건지 정의를 내림 binding:BindingBuilder((){ Get.put(DependancyController()); }) ); } ),
- 바인딩은 라우트 단계에서 인스턴스 관리가 가능해짐. 페이지가 생성될 때 컨트롤러가 생성되고, 페이지가 소멸될 때 컨트롤러 역시 종료된다.
=> 메모리 삭제가 되어 성능이 느려지지 않음.
Get.lazyPut 이용
MaterialButton( child:Text("Get Lazy Put 방식"), onPressed: (){ Get.to( GetLazyPut(), binding:BindingBuilder((){ Get.lazyPut<DependancyController>( () => DependancyController()); }), ); } ),
- lazyPut은 builder를 이용한다. Put과 다르게 인스턴스화 되지 않아서 메모리에 올리지 않음. 사용하기 위해 접근 할 때 메모리에 올라간다.
Get.putAsync 이용
MaterialButton( child:Text("Get Put Async 방식"), onPressed: (){ Get.to( Getput(), binding: BindingsBuilder((){ Get.putAsync<DependancyController>(() async { await Future.delayed(Duration(seconds:5)); //5초 후 인스턴스화 됨. return DependancyController();} ) }) ); } ),
- Get put과 유사하지만 페이지 접근 시 비동기식으로 데이터를 받아오거나 가공처리 후 컨트롤러를 인스턴스화 시킬 수 있음.
Get Create 이용
MaterialButton( child:Text("Get Create 방식"), onPressed: (){ Get.to( Getput(), binding: BindingsBuilder(() { Get.created<DependancyController>( () => DependancyController()); }), ); } ), ], ) ) } }
- 위 세가지 방식은 모두 싱글톤 방식(하나를 생성하고 어디에서든 공유하는 방식)임. 반면 Get Creat는 계속 생성하여 여러 개의 인스턴스가 존재하게 됨. 자동으로 삭제되지 않기 때문에 사용 종료시마다 삭제가 필요하다.
Get Put 페이지
class GetPut extends StatelessWidget {
const GetPut({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body:Column(
Get LazyPut 페이지
class GetLazyPut extends StatelessWidget {
const GetLazyPut({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body:Column(
출처 https://www.youtube.com/watch?v=KDTjo-6jFKs
Author And Source
이 문제에 관하여([GetX 기능 정리] 4. 의존성 주입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mm723/GetX-기능-정리-4.-의존성-주입저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)