2025-05-17 00:34:56 +03:00
|
|
|
import 'package:cherrypick_annotations/cherrypick_annotations.dart';
|
2025-05-16 18:09:14 +03:00
|
|
|
import 'package:dio/dio.dart';
|
|
|
|
|
import 'package:cherrypick/cherrypick.dart';
|
2025-08-11 16:27:46 +03:00
|
|
|
import 'package:talker_dio_logger/talker_dio_logger_interceptor.dart';
|
|
|
|
|
import 'package:talker_dio_logger/talker_dio_logger_settings.dart';
|
|
|
|
|
import 'package:talker_flutter/talker_flutter.dart';
|
2025-05-16 18:09:14 +03:00
|
|
|
import '../data/network/json_placeholder_api.dart';
|
|
|
|
|
import '../data/post_repository_impl.dart';
|
|
|
|
|
import '../domain/repository/post_repository.dart';
|
|
|
|
|
|
2025-05-23 12:21:23 +03:00
|
|
|
part 'app_module.module.cherrypick.g.dart';
|
2025-05-16 18:09:14 +03:00
|
|
|
|
2025-05-17 00:34:56 +03:00
|
|
|
@module()
|
|
|
|
|
abstract class AppModule extends Module {
|
2025-08-11 16:27:46 +03:00
|
|
|
@provide()
|
|
|
|
|
@singleton()
|
|
|
|
|
TalkerDioLoggerSettings talkerDioLoggerSettings() => TalkerDioLoggerSettings(
|
|
|
|
|
printRequestHeaders: true,
|
|
|
|
|
printResponseHeaders: true,
|
|
|
|
|
printResponseMessage: true,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
@provide()
|
|
|
|
|
@singleton()
|
|
|
|
|
TalkerDioLogger talkerDioLogger(Talker talker, TalkerDioLoggerSettings settings) => TalkerDioLogger(talker: talker, settings: settings);
|
|
|
|
|
|
2025-05-21 00:50:57 +03:00
|
|
|
@instance()
|
|
|
|
|
int timeout() => 1000;
|
|
|
|
|
|
2025-05-21 10:40:21 +03:00
|
|
|
@instance()
|
|
|
|
|
@named('Delay')
|
|
|
|
|
Future<int> delay() => Future.value(1000);
|
|
|
|
|
|
|
|
|
|
@instance()
|
|
|
|
|
@named('Size')
|
|
|
|
|
Future<int> size() async => 10;
|
|
|
|
|
|
2025-05-21 00:50:57 +03:00
|
|
|
@instance()
|
|
|
|
|
@named('baseUrl')
|
|
|
|
|
String baseUrl() => "https://google.com";
|
|
|
|
|
|
2025-05-21 11:05:18 +03:00
|
|
|
@provide()
|
|
|
|
|
@named('Delay1')
|
|
|
|
|
Future<int> delay1() => Future.value(1000);
|
|
|
|
|
|
|
|
|
|
@provide()
|
|
|
|
|
@named('Size1')
|
|
|
|
|
Future<int> size1() async => 10;
|
|
|
|
|
|
2025-05-21 00:50:57 +03:00
|
|
|
@provide()
|
2025-05-17 00:34:56 +03:00
|
|
|
@singleton()
|
2025-05-17 22:02:32 +03:00
|
|
|
@named('dio')
|
2025-08-11 16:27:46 +03:00
|
|
|
Dio dio(@named('baseUrl') String baseUrl, TalkerDioLogger logger) =>
|
|
|
|
|
Dio(BaseOptions(baseUrl: baseUrl))..interceptors.add(logger);
|
2025-05-16 18:09:14 +03:00
|
|
|
|
2025-05-21 00:50:57 +03:00
|
|
|
@provide()
|
2025-05-17 00:34:56 +03:00
|
|
|
@singleton()
|
2025-05-17 22:02:32 +03:00
|
|
|
JsonPlaceholderApi api(@named('dio') Dio dio) => JsonPlaceholderApi(dio);
|
2025-05-17 00:34:56 +03:00
|
|
|
|
2025-05-21 00:50:57 +03:00
|
|
|
@provide()
|
2025-05-17 22:02:32 +03:00
|
|
|
@named('repo')
|
2025-05-21 00:50:57 +03:00
|
|
|
PostRepository repo(JsonPlaceholderApi api) => PostRepositoryImpl(api);
|
2025-05-21 12:23:33 +03:00
|
|
|
|
|
|
|
|
@provide()
|
|
|
|
|
@named('TestProvideWithParams')
|
|
|
|
|
String testProvideWithParams(@params() dynamic params) => "hello $params";
|
|
|
|
|
|
|
|
|
|
@provide()
|
|
|
|
|
@named('TestProvideAsyncWithParams')
|
|
|
|
|
Future<String> testProvideAsyncWithParams(@params() dynamic params) async =>
|
|
|
|
|
"hello $params";
|
|
|
|
|
|
|
|
|
|
@provide()
|
|
|
|
|
@named('TestProvideWithParams1')
|
|
|
|
|
String testProvideWithParams1(
|
|
|
|
|
@named('baseUrl') String baseUrl, @params() dynamic params) =>
|
|
|
|
|
"hello $params";
|
|
|
|
|
|
|
|
|
|
@provide()
|
|
|
|
|
@named('TestProvideAsyncWithParams1')
|
|
|
|
|
Future<String> testProvideAsyncWithParams1(
|
|
|
|
|
@named('baseUrl') String baseUrl, @params() dynamic params) async =>
|
|
|
|
|
"hello $params";
|
2025-05-16 18:09:14 +03:00
|
|
|
}
|