Files
ai_english/client/lib/core/config/environment.dart

134 lines
3.4 KiB
Dart
Raw Normal View History

2025-11-17 13:39:05 +08:00
/// 环境配置
enum Environment {
development,
staging,
production,
}
/// 环境配置管理
class EnvironmentConfig {
static Environment _currentEnvironment = Environment.development;
/// 获取当前环境
static Environment get current => _currentEnvironment;
/// 设置当前环境
static void setEnvironment(Environment env) {
_currentEnvironment = env;
}
/// 从字符串设置环境
static void setEnvironmentFromString(String? envString) {
switch (envString?.toLowerCase()) {
case 'production':
case 'prod':
_currentEnvironment = Environment.production;
break;
case 'staging':
case 'stage':
_currentEnvironment = Environment.staging;
break;
case 'development':
case 'dev':
default:
_currentEnvironment = Environment.development;
break;
}
}
/// 获取当前环境的API基础URL
static String get baseUrl {
switch (_currentEnvironment) {
case Environment.production:
return 'https://loukao.cn/api/v1';
case Environment.staging:
return 'http://localhost:8080/api/v1';
case Environment.development:
default:
// 开发环境localhost 用于 Web10.0.2.2 用于 Android 模拟器
return const String.fromEnvironment(
'API_BASE_URL',
defaultValue: 'http://localhost:8080/api/v1',
);
}
}
/// 获取环境名称
static String get environmentName {
switch (_currentEnvironment) {
case Environment.production:
return 'Production';
case Environment.staging:
return 'Staging';
case Environment.development:
return 'Development';
}
}
/// 是否为开发环境
static bool get isDevelopment => _currentEnvironment == Environment.development;
/// 是否为生产环境
static bool get isProduction => _currentEnvironment == Environment.production;
/// 是否为预发布环境
static bool get isStaging => _currentEnvironment == Environment.staging;
/// 开发环境配置
static const Map<String, String> developmentConfig = {
'baseUrl': 'http://localhost:8080/api/v1',
'baseUrlAndroid': 'http://10.0.2.2:8080/api/v1',
'wsUrl': 'ws://localhost:8080/ws',
};
/// 预发布环境配置
static const Map<String, String> stagingConfig = {
'baseUrl': 'https://loukao.cn/api/v1',
'wsUrl': 'ws://your-staging-domain.com/ws',
};
/// 生产环境配置
static const Map<String, String> productionConfig = {
'baseUrl': 'https://loukao.cn/api/v1',
'wsUrl': 'ws://your-production-domain.com/ws',
};
/// 获取当前环境配置
static Map<String, String> get config {
switch (_currentEnvironment) {
case Environment.production:
return productionConfig;
case Environment.staging:
return stagingConfig;
case Environment.development:
default:
return developmentConfig;
}
}
/// 获取WebSocket URL
static String get wsUrl {
return config['wsUrl'] ?? '';
}
/// 获取连接超时时间(毫秒)
static int get connectTimeout {
return isProduction ? 10000 : 30000;
}
/// 获取接收超时时间(毫秒)
static int get receiveTimeout {
return isProduction ? 10000 : 30000;
}
/// 是否启用日志
static bool get enableLogging {
return !isProduction;
}
/// 是否启用调试模式
static bool get debugMode {
return isDevelopment;
}
}