starting implement inject generator

This commit is contained in:
Sergey Penkovsky
2025-05-23 12:21:23 +03:00
parent 161e9085f4
commit 1f6ee172a1
13 changed files with 154 additions and 30 deletions

View File

@@ -0,0 +1,35 @@
import 'package:cherrypick/cherrypick.dart';
import 'package:cherrypick_annotations/cherrypick_annotations.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'domain/repository/post_repository.dart';
import 'presentation/bloc/post_bloc.dart';
import 'router/app_router.dart';
part 'app.inject.cherrypick.g.dart';
@injectable()
class MyApp extends StatelessWidget with _$MyApp {
final Scope scope;
final _appRouter = AppRouter();
@named('repo')
@inject()
late final PostRepository repository;
MyApp({super.key, required this.scope});
@override
Widget build(BuildContext context) {
_inject(this);
return BlocProvider(
create: (_) => PostBloc(repository),
child: MaterialApp.router(
routeInformationParser: _appRouter.defaultRouteParser(),
routerDelegate: _appRouter.delegate(),
theme: ThemeData.light(),
),
);
}
}

View File

@@ -5,7 +5,7 @@ import '../data/network/json_placeholder_api.dart';
import '../data/post_repository_impl.dart';
import '../domain/repository/post_repository.dart';
part 'app_module.cherrypick.g.dart';
part 'app_module.module.cherrypick.g.dart';
@module()
abstract class AppModule extends Module {

View File

@@ -1,10 +1,7 @@
import 'package:cherrypick/cherrypick.dart';
import 'package:flutter/material.dart';
import 'package:postly/app.dart';
import 'di/app_module.dart';
import 'domain/repository/post_repository.dart';
import 'presentation/bloc/post_bloc.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'router/app_router.dart';
void main() {
final scope = CherryPick.openRootScope();
@@ -12,25 +9,3 @@ void main() {
runApp(MyApp(scope: scope));
}
class MyApp extends StatelessWidget {
final Scope scope;
final _appRouter = AppRouter();
MyApp({super.key, required this.scope});
@override
Widget build(BuildContext context) {
// Получаем репозиторий через injector
final repository = scope.resolve<PostRepository>(named: 'repo');
return BlocProvider(
create: (_) => PostBloc(repository),
child: MaterialApp.router(
routeInformationParser: _appRouter.defaultRouteParser(),
routerDelegate: _appRouter.delegate(),
theme: ThemeData.light(),
),
);
}
}

View File

@@ -170,7 +170,7 @@ packages:
path: "../../cherrypick_generator"
relative: true
source: path
version: "1.1.0-dev.1"
version: "1.1.0-dev.2"
clock:
dependency: transitive
description: