import '../utils/constants.dart'; import 'environment.dart'; import 'prod_config.dart'; import 'staging_config.dart'; import 'test_config.dart'; /// 运行时环境配置解析。 /// /// 当前环境 [environment] 默认 [AppEnvironment.test],并受 [ProductionGuard] /// 在启动时强制校验,绝不可能进入生产模式。 class AppConfig { AppConfig._(); /// 接口统一前缀。 static const String apiPrefix = '/api'; /// 当前环境,默认生产(正式版,域名 https://ips.ainetv.com)。 /// 如需回归测试构建,改回 [AppEnvironment.test] 即可。 static AppEnvironment _environment = AppEnvironment.production; /// 当前环境(只读)。 static AppEnvironment get environment => _environment; /// 切换环境:接受 [AppEnvironment.test] / [AppEnvironment.staging] / [AppEnvironment.production]。 static void switchEnvironment(AppEnvironment env) { _environment = env; } /// 当前环境的后端 origin。 static String get apiBaseUrl { switch (_environment) { case AppEnvironment.test: return TestConfig.apiBaseUrl; case AppEnvironment.staging: return StagingConfig.apiBaseUrl; case AppEnvironment.production: return ProdConfig.apiBaseUrl; } } /// 完整 API 基础地址(origin + 前缀)。 static String get apiFullBaseUrl => apiBaseUrl + apiPrefix; /// 当前环境是否启用登录验证码。 static bool get enableCaptcha { switch (_environment) { case AppEnvironment.test: return TestConfig.enableCaptcha; case AppEnvironment.staging: return StagingConfig.enableCaptcha; case AppEnvironment.production: return ProdConfig.enableCaptcha; } } }