|
|
|
@ -14,17 +14,42 @@ import '../../common/webview_page.dart'; |
|
|
|
import 'package:get_storage/get_storage.dart'; |
|
|
|
import 'package:device_info_plus/device_info_plus.dart'; |
|
|
|
import 'dart:io'; |
|
|
|
import 'package:package_info_plus/package_info_plus.dart'; |
|
|
|
import '../../../data/services/version_update_service.dart'; |
|
|
|
|
|
|
|
enum LoginViewState { |
|
|
|
welcome, // 欢迎页面 |
|
|
|
verification // 验证码页面 |
|
|
|
} |
|
|
|
|
|
|
|
// 用户渠道枚举 |
|
|
|
enum UserChannel { |
|
|
|
UNKNOWN(0), // 未知渠道 |
|
|
|
CHINA_HUAWEI(1), // 中国-华为 |
|
|
|
CHINA_XIAOMI(2), // 中国-小米 |
|
|
|
CHINA_OPPO(3), // 中国-OPPO |
|
|
|
CHINA_VIVO(4), // 中国-VIVO |
|
|
|
CHINA_HONOR(5), // 中国-荣耀 |
|
|
|
OFFICIAL(100), // 官方渠道 |
|
|
|
GLOBAL_APPLE(101), // 全球-苹果 |
|
|
|
GLOBAL_GOOGLE(102); // 全球-谷歌 |
|
|
|
|
|
|
|
const UserChannel(this.value); |
|
|
|
final int value; |
|
|
|
} |
|
|
|
|
|
|
|
class LoginController extends GetxController { |
|
|
|
static LoginController get to => Get.find(); |
|
|
|
final GetStorage _storage = GetStorage(); |
|
|
|
|
|
|
|
// 添加游客登录显示状态 |
|
|
|
final _isGuestLoginVisible = false.obs; |
|
|
|
bool get isGuestLoginVisible => _isGuestLoginVisible.value; |
|
|
|
|
|
|
|
String _deviceId = ''; |
|
|
|
String _appVersion = ''; // APP版本号 |
|
|
|
String _countryCode = ''; // 国家代码 |
|
|
|
UserChannel _userChannel = UserChannel.OFFICIAL; // 默认渠道 |
|
|
|
|
|
|
|
final _hasAcceptedPrivacy = false.obs; |
|
|
|
bool get hasAcceptedPrivacy => _hasAcceptedPrivacy.value; |
|
|
|
@ -189,6 +214,8 @@ class LoginController extends GetxController { |
|
|
|
}); |
|
|
|
|
|
|
|
_initDeviceInfo(); |
|
|
|
_initAppInfo(); // 新增:初始化APP信息 |
|
|
|
_checkGuestLoginConfig(); // 检查游客登录配置 |
|
|
|
} |
|
|
|
|
|
|
|
@override |
|
|
|
@ -198,6 +225,23 @@ class LoginController extends GetxController { |
|
|
|
super.onClose(); |
|
|
|
} |
|
|
|
|
|
|
|
// 检查游客登录配置 |
|
|
|
Future<void> _checkGuestLoginConfig() async { |
|
|
|
try { |
|
|
|
final versionService = VersionUpdateService.to; |
|
|
|
final updateInfo = await versionService.checkForUpdate(); |
|
|
|
|
|
|
|
if (updateInfo.appInfo != null) { |
|
|
|
_isGuestLoginVisible.value = updateInfo.appInfo!.tourists; |
|
|
|
Logger().d('游客登录显示状态: ${_isGuestLoginVisible.value}'); |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
Logger().e('检查游客登录配置失败: $e'); |
|
|
|
// 默认不显示游客登录 |
|
|
|
_isGuestLoginVisible.value = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 显示隐私政策弹窗 |
|
|
|
void _showPrivacyDialog() { |
|
|
|
// 获取当前主题模式 |
|
|
|
@ -378,6 +422,29 @@ class LoginController extends GetxController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 新增:初始化APP信息(版本号、渠道、国家代码) |
|
|
|
Future<void> _initAppInfo() async { |
|
|
|
try { |
|
|
|
// 获取APP版本号 |
|
|
|
final packageInfo = await PackageInfo.fromPlatform(); |
|
|
|
_appVersion = '${packageInfo.version}+${packageInfo.buildNumber}'; |
|
|
|
Logger().d('appVersion: $_appVersion'); |
|
|
|
|
|
|
|
// 获取国家代码 |
|
|
|
_countryCode = Get.locale?.countryCode ?? 'Unknown'; |
|
|
|
Logger().d('countryCode: $_countryCode'); |
|
|
|
|
|
|
|
// 获取用户渠道(根据平台和设备信息确定) |
|
|
|
_userChannel = UserChannel.UNKNOWN; |
|
|
|
Logger().d('userChannel: ${_userChannel.value}'); |
|
|
|
} catch (e) { |
|
|
|
Logger().e('获取APP信息失败: $e'); |
|
|
|
_appVersion = 'Unknown'; |
|
|
|
_countryCode = 'Unknown'; |
|
|
|
_userChannel = UserChannel.UNKNOWN; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 更新选中的国家编码 |
|
|
|
void updateCountryCode(String code, String flag) { |
|
|
|
_selectedCountryCode.value = code; |
|
|
|
|