Flutter 주사제 사용 방법
The Code Project Is Here...
이 기사는 주입 가능한 단계별 구현 방법에 중점을 둘 것입니다...
now.. Injectable 은 다음과 같은 접근 방식으로 종속성을 등록하는 대신 주석을 통해 개체를 종속성 주입에 등록할 수 있게 해주는 종속성 주입 구성 요소입니다.
getIt.registerSingleton<TaskRepositoryImpl>(TaskRepositoryImpl());
getIt.registerLazySingleton<MainScreenViewModel>(() =>MainScreenViewModel());
다음과 같이
TaskRepositoryImpl
및 MainScreenViewModel
의 각 클래스 선언에 간단히 주석을 추가할 수 있습니다.@singleton
class TaskRepositoryImpl implements ITaskRepository{
final String baseUrl = "run.mocky.io";
...
}
@injectable
class MainScreenViewModel extends BaseViewModel {
List<TaskModel>? _tasksData;
final ITaskRepository _taskRepository = getIt<TaskRepositoryImpl>();
...
}
이제 WhatToDoApp의 경우
이 이미지를 기억하십니까?
싱글톤 리포지토리와 ViewModel 레이어의 늦은 할당을 원하므로 다음과 같이
TaskRepository
를 선언합니다.@singleton
class TaskRepositoryImpl implements ITaskRepository{
final String baseUrl = "run.mocky.io";
...
}
뷰 모델에서 사용해야 할 때 이렇게 사용할 수 있습니다.
@injectable
class MainScreenViewModel extends BaseViewModel {
List<TaskModel>? _tasksData;
//=== THIS WAY ===//
final ITaskRepository _taskRepository = getIt<TaskRepositoryImpl>();
...
}
쉽죠?
이 스타일을 구현하려면 pubspec.yaml에 몇 가지 항목을 가져와야 합니다.
dependencies:
flutter:
sdk: flutter
injectable: ^1.5.3
get_it: ^7.2.0
dev_dependencies:
# add the generator to your dev_dependencies
injectable_generator: ^1.5.4
# add build runner if not already added
build_runner: ^2.2.0
@Injectable
또는 @Singleton
주석으로 클래스를 선언할 때마다 주입 가능한 구성 요소는 실제로 다음과 같이 GetIt에 대한 등록을 포함하는 파일을 생성합니다._i1.GetIt $initGetIt(_i1.GetIt get,
{String? environment, _i2.EnvironmentFilter? environmentFilter}) {
final gh = _i2.GetItHelper(get, environment, environmentFilter);
gh.factory<_i3.MainScreenViewModel>(() => _i3.MainScreenViewModel());
gh.singleton<_i4.TaskRepositoryImpl>(_i4.TaskRepositoryImpl());
return get;
위와 같이 주입 가능한 파일 콘텐츠 생성을 위해 내 경우에는 Setup.dart라는 새 파일을 만들어야 합니다.
그리고 내용은 이렇습니다..
import 'package:get_it/get_it.dart';
import 'package:injectable/injectable.dart';
import 'package:what_to_do_app/Setup.config.dart';
final getIt = GetIt.instance;
@InjectableInit(
initializerName: r'$initGetIt', // default
preferRelativeImports: true, // default
asExtension: false, // default
)
@InjectableInit(generateForDir: ['test'])
void configureDependencies() => $initGetIt(getIt);
위의
Setup.dart
를 선언한 후 명령을 실행할 수 있습니다.flutter packages pub run build_runner build --delete-conflicting-outputs
그런 다음
Setup.config.dart
라는 파일을 생성합니다. 그럼 그게 다야 .. 의존성 주입이 이제 당신을 섬길 준비가되었습니다 .. 건배 !!!..참조:
Injectable
GetIt
Reference
이 문제에 관하여(Flutter 주사제 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/noveriojoee/flutter-how-to-use-injectable-4oag텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)