inblog logo
|
정리한 노션 내용을 올리는 공간
    Flutter

    Flutter에서, Injectable 적용하기

    to
    tofu
    Feb 27, 2025
    Flutter에서, Injectable 적용하기
    Contents
    Injectable 적용하기1. di/di_setup.dart 파일 생성2. 파일 붙여넣기 3. 내용 변경하기 di/di_setup.dartRepository_impl에 필요한 코드 UseCase의 경우(아마도 일반 class일 것임)ViewModel 처리하는 경우(화면마다 생성되는 게 맞음)한번에 정리하기Main 코드 수정하기
    Injectable 적용하기1. di/di_setup.dart 파일 생성2. 파일 붙여넣기 3. 내용 변경하기 di/di_setup.dartRepository_impl에 필요한 코드 UseCase의 경우(아마도 일반 class일 것임)ViewModel 처리하는 경우(화면마다 생성되는 게 맞음)한번에 정리하기Main 코드 수정하기
     

    Injectable 적용하기

    1. di/di_setup.dart 파일 생성

     

    2. 파일 붙여넣기

    //pub.dev에 있는 내용 복사 import '<FILE_NAME>.config.dart'; final getIt = GetIt.instance; @InjectableInit( initializerName: 'init', // default preferRelativeImports: true, // default asExtension: true, // default ) void configureDependencies() => getIt.init();

    3. 내용 변경하기 di/di_setup.dart

    //pub.dev에 있는 내용 복사 import 'di_setup.config.dart'; //파일명 변경 import 'package:injectable/injectable.dart' //추가하기 import 'package:get_it/get_it.dart' //추가하기 final getIt = GetIt.instance; @InjectableInit( ) //옵션 삭제 void configureDependencies() => getIt.init(); //혹여나 future로 처리해야 되는 사항이 발생하면 Future<void> 라고 처리하면 된다.
     

    Repository_impl에 필요한 코드

    → implements를 통해서 받는 것들은 모두 Singleton으로 받아주면 된다.
    @Singleton(as: Repository이름) Repository이름Impl implements Repository이름
     

    UseCase의 경우(아마도 일반 class일 것임)

    @singleton //단순하게 소문자 @singleton으로 처리하면 된다. class GetUseCase { }
     

    ViewModel 처리하는 경우(화면마다 생성되는 게 맞음)

    // @injectable -> viewModel은 화면마다 매번 생성되는 것이 맞다. -> @injectable을 추가하자 @injectable clas MainViewModel with ChangeNotifier { }
     

    한번에 정리하기

    return MainViewModel ( GetNearByStoreUseCase ( storeRepository: MockRepositoryImpl(), locationRepository: MocakLocationRepositoryImpl(), locationPermissionHandler: MockLocationPermissionHandler(), ) -> 이 내용이 한꺼번에 return getIt.get<MainViewModel>(); ---------------------------------------------------------------------------------------- //동일하게, goRouter를 적용한다고 가정하면, create:(BuildContext context) => getIt.get<MainViewModel>();
     

    Main 코드 수정하기

    void main() { configureDependencies(); }
     
     
    Share article

    정리한 노션 내용을 올리는 공간

    RSS·Powered by Inblog