mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 09:30:45 +00:00
109 lines
3.3 KiB
Dart
109 lines
3.3 KiB
Dart
import 'package:envied/envied.dart';
|
|
import 'package:friflex_starter/app/app_env.dart';
|
|
|
|
part 'app_config.g.dart';
|
|
|
|
/// {@template i_app_config}
|
|
/// Интерфейс для конфигурации приложения.
|
|
///
|
|
/// Определяет обязательные параметры для всех реализаций конфигурации:
|
|
/// - Наименование конфигурации
|
|
/// - Базовый URL для API
|
|
/// - Тип окружения (dev, prod, stage)
|
|
/// - Секретный ключ для шифрования данных
|
|
/// {@endtemplate}
|
|
abstract interface class IAppConfig {
|
|
/// {@macro i_app_config}
|
|
IAppConfig();
|
|
|
|
/// Наименование сервиса конфигурации
|
|
String get name => 'IAppConfig';
|
|
|
|
/// Основной адрес для запросов к API
|
|
String get baseUrl;
|
|
|
|
/// Тип окружения (dev, prod, stage)
|
|
AppEnv get env;
|
|
|
|
/// Секретный ключ для шифрования данных
|
|
String get secretKey;
|
|
}
|
|
|
|
/// {@template app_config_dev}
|
|
/// Класс для реализации конфигурации приложения в режиме разработки.
|
|
///
|
|
/// Использует переменные окружения из файла env/dev.env.
|
|
/// Предназначен для локальной разработки и тестирования.
|
|
/// {@endtemplate}
|
|
@Envied(name: 'Dev', path: 'env/dev.env')
|
|
class AppConfigDev implements IAppConfig {
|
|
/// {@macro app_config_dev}
|
|
AppConfigDev();
|
|
|
|
@override
|
|
AppEnv get env => AppEnv.dev;
|
|
|
|
@override
|
|
String get name => 'AppConfigDev';
|
|
|
|
@override
|
|
@EnviedField()
|
|
final String baseUrl = _Dev.baseUrl;
|
|
|
|
@override
|
|
@EnviedField(obfuscate: true)
|
|
final String secretKey = _Dev.secretKey;
|
|
}
|
|
|
|
/// {@template app_config_prod}
|
|
/// Класс для реализации конфигурации приложения в продакшн режиме.
|
|
///
|
|
/// Использует переменные окружения из файла env/prod.env.
|
|
/// Предназначен для финальной сборки приложения.
|
|
/// {@endtemplate}
|
|
@Envied(name: 'Prod', path: 'env/prod.env')
|
|
class AppConfigProd implements IAppConfig {
|
|
/// {@macro app_config_prod}
|
|
AppConfigProd();
|
|
|
|
@override
|
|
AppEnv get env => AppEnv.prod;
|
|
|
|
@override
|
|
String get name => 'AppConfigProd';
|
|
|
|
@override
|
|
@EnviedField(obfuscate: true)
|
|
final String baseUrl = _Prod.baseUrl;
|
|
|
|
@override
|
|
@EnviedField(obfuscate: true)
|
|
final String secretKey = _Prod.secretKey;
|
|
}
|
|
|
|
/// {@template app_config_stage}
|
|
/// Класс для реализации конфигурации приложения в стейдж режиме.
|
|
///
|
|
/// Использует переменные окружения из файла env/stage.env.
|
|
/// Предназначен для тестирования в среде, близкой к продакшн.
|
|
/// {@endtemplate}
|
|
@Envied(name: 'Stage', path: 'env/stage.env')
|
|
class AppConfigStage implements IAppConfig {
|
|
/// {@macro app_config_stage}
|
|
AppConfigStage();
|
|
|
|
@override
|
|
AppEnv get env => AppEnv.stage;
|
|
|
|
@override
|
|
String get name => 'AppConfigStage';
|
|
|
|
@override
|
|
@EnviedField(obfuscate: true)
|
|
final String baseUrl = _Stage.baseUrl;
|
|
|
|
@override
|
|
@EnviedField(obfuscate: true)
|
|
final String secretKey = _Stage.secretKey;
|
|
}
|