feat: implement generator di module

This commit is contained in:
Sergey Penkovsky
2025-05-17 00:34:56 +03:00
parent b906e927c3
commit d1e726aaec
18 changed files with 118 additions and 129 deletions

View File

@@ -1,21 +1,20 @@
import 'package:cherrypick_annotations/cherrypick_annotations.dart';
import 'package:dio/dio.dart';
import 'package:cherrypick/cherrypick.dart';
import '../data/network/json_placeholder_api.dart';
import '../data/post_repository_impl.dart';
import '../domain/repository/post_repository.dart';
class AppModule extends Module {
@override
void builder(Scope currentScope) {
bind<Dio>().toProvide(() => Dio()).singleton();
part 'app_module.cherrypick.g.dart';
bind<JsonPlaceholderApi>()
.toProvide(() => JsonPlaceholderApi(currentScope.resolve<Dio>()))
.singleton();
@module()
abstract class AppModule extends Module {
@singleton()
Dio dio() => Dio();
bind<PostRepository>()
.toProvide(() =>
PostRepositoryImpl(currentScope.resolve<JsonPlaceholderApi>()))
.singleton();
}
@singleton()
JsonPlaceholderApi api(Dio dio) => JsonPlaceholderApi(dio);
@singleton()
PostRepository repo(JsonPlaceholderApi api) => PostRepositoryImpl(api);
}

View File

@@ -8,7 +8,7 @@ import 'router/app_router.dart';
void main() {
final scope = CherryPick.openRootScope();
scope.installModules([AppModule()]);
scope.installModules([$AppModule()]);
runApp(MyApp(scope: scope));
}