import 'package:flutter/foundation.dart'; import 'package:yumi/app/config/configs/sc_variant1_config.dart'; import 'package:yumi/app/config/business_logic_strategy.dart'; /// 应用配置基类 /// 定义单一应用配置接口 abstract class AppConfig { /// 应用显示名称 String get appName; /// 包名/应用ID String get packageName; /// API服务器地址 String get apiHost; /// 图片服务器地址 String get imgHost; /// 隐私协议URL String get privacyAgreementUrl; /// 用户协议URL String get userAgreementUrl; /// 应用下载链接(Google Play) String get appDownloadUrlGoogle; /// 应用下载链接(App Store) String get appDownloadUrlApple; /// 主播代理URL String get anchorAgentUrl; /// 主持人中心URL String get hostCenterUrl; /// BD中心URL String get bdCenterUrl; /// BD领导中心URL String get bdLeaderUrl; /// 代币销售URL String get coinSellerUrl; /// 管理员URL String get adminUrl; /// 代理中心URL String get agencyCenterUrl; /// 游戏国王URL String get gamesKingUrl; /// 财富榜URL String get wealthRankUrl; /// 魅力榜URL String get charmRankUrl; /// 房间榜URL String get roomRankUrl; /// 邀请新用户URL String get inviteNewUserUrl; /// 主题主颜色 int get primaryColor; /// 腾讯IM App ID String get tencentImAppid; /// Agora RTC App ID String get agoraRtcAppid; /// 游戏App ID num get gameAppid; /// 游戏渠道 String get gameAppChannel; /// 全服广播大群ID String get bigBroadcastGroup; /// 管理账号 String get imAdmin; /// 是否审核模式 bool get isReview; /// 礼物特效开关 bool get isGiftSpecialEffects; /// 入场秀开关 bool get isEntryVehicleAnimation; /// 全局飘屏开关 bool get isFloatingAnimationInGlobal; /// 幸运礼物特效开关 bool get isLuckGiftSpecialEffects; /// 获取功能开关 Map get featureFlags; /// 获取业务逻辑策略 BusinessLogicStrategy get businessLogicStrategy; /// 获取所有配置的Map(用于调试) Map toMap(); /// 验证配置是否有效 /// 检查必要的配置项是否已正确设置 /// 如果配置无效,抛出 [StateError] void validate(); /// 当前应用的配置实例 static AppConfig? _current; /// 从环境变量获取variant配置 /// 支持通过--dart-define=VARIANT=variant2传递参数 /// 默认使用variant1 static String _getVariant() { const variant = String.fromEnvironment('VARIANT', defaultValue: 'variant1'); return variant; } /// 获取当前配置实例 static AppConfig get current { if (_current == null) { throw StateError( 'AppConfig not initialized. Call AppConfig.initialize() first.', ); } return _current!; } /// 初始化应用配置 /// 支持通过环境变量选择variant(variant1或variant2) /// 使用--dart-define=VARIANT=variant2传递参数 static void initialize() { final variant = _getVariant(); switch (variant) { case 'variant1': default: _current = SCVariant1Config(); debugPrint('AppConfig initialized for variant1 '); } // 验证配置是否有效 try { _current!.validate(); } catch (e) { // validate方法在调试模式下不会抛出异常 // 只有在发布模式下验证失败才会抛出异常 debugPrint('应用配置验证失败: $e'); rethrow; } } }