Files
ai_english/client/lib/core/config/environment.dart
2025-11-17 13:39:05 +08:00

134 lines
3.4 KiB
Dart
Raw Permalink 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.

/// 环境配置
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;
}
}