Files
friflex_flutter_starter/lib/di/di_container.dart
Yuri Petrov 4a49083ef3 refactor(http): удалить интерфейс IHttpClient и упростить реализацию AppHttpClient (#42)
* refactor(http): удалить интерфейс IHttpClient и упростить реализацию AppHttpClient

- Удален интерфейс IHttpClient, что упростило структуру кода.
- AppHttpClient теперь напрямую использует Dio без промежуточного интерфейса.
- Обновлены зависимости в репозиториях для использования нового HTTP клиента.

* refactor(code):  dart format

* chore(pr-template): удалить отключения markdownlint из шаблона PR

* docs(copilot-instructions): добавить правила проведения Code Review

---------

Co-authored-by: petrovyuri <petrovyuri@example.com>
2025-12-11 10:27:19 +03:00

65 lines
2.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:friflex_starter/app/app_config/app_config.dart';
import 'package:friflex_starter/app/app_env.dart';
import 'package:friflex_starter/app/http/app_http_client.dart';
import 'package:friflex_starter/di/di_repositories.dart';
import 'package:friflex_starter/di/di_services.dart';
import 'package:friflex_starter/di/di_typedefs.dart';
import 'package:friflex_starter/features/debug/i_debug_service.dart';
/// {@template dependencies_container}
/// Контейнер для зависимостей
/// [env] - окружение приложения
/// [debugService] - сервис для отладки
/// {@endtemplate}
final class DiContainer {
/// {@macro dependencies_container}
DiContainer({required this.env, required IDebugService dService})
: debugService = dService;
final AppEnv env;
/// Сервис для отладки, получаем из конструктора
late final IDebugService debugService;
/// Конфигурация приложения
late final IAppConfig appConfig;
/// Сервис для работы с HTTP запросами
late final AppHttpClient httpClient;
/// Репозитории приложения
late final DiRepositories repositories;
/// Сервисы приложения
late final DiServices services;
/// Метод для инициализации зависимостей
Future<void> init({
required OnProgress onProgress,
required OnComplete onComplete,
required OnError onError,
}) async {
// Инициализация конфигурации приложения
appConfig = switch (env) {
.dev => AppConfigDev(),
.prod => AppConfigProd(),
.stage => AppConfigStage(),
};
// Инициализация HTTP клиента
httpClient = AppHttpClient(
debugService: debugService,
appConfig: appConfig,
);
// Инициализация сервисов
services = DiServices()
..init(onProgress: onProgress, onError: onError, diContainer: this);
// throw Exception('Тестовая - ошибка инициализации зависимостей');
// Инициализация репозиториев
repositories = DiRepositories()
..init(onProgress: onProgress, onError: onError, diContainer: this);
onComplete('Инициализация зависимостей завершена!');
}
}