From d9aa4fd13021f4ed15c2002800f3c0531d3fd156 Mon Sep 17 00:00:00 2001 From: ZHR007 Date: Sat, 27 Dec 2025 17:52:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=A1=B5=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setting/setting_controller.dart | 69 +++++++------------ lib/model/mine/app_version.dart | 47 +++++++++++++ lib/network/api_urls.dart | 3 + lib/network/user_api.dart | 7 ++ lib/network/user_api.g.dart | 37 ++++++++++ lib/pages/setting/setting_page.dart | 5 +- 6 files changed, 120 insertions(+), 48 deletions(-) create mode 100644 lib/model/mine/app_version.dart diff --git a/lib/controller/setting/setting_controller.dart b/lib/controller/setting/setting_controller.dart index 82bbbb3..32b71af 100644 --- a/lib/controller/setting/setting_controller.dart +++ b/lib/controller/setting/setting_controller.dart @@ -13,6 +13,9 @@ import 'package:tdesign_flutter/tdesign_flutter.dart'; import '../../generated/assets.dart'; import 'package:package_info_plus/package_info_plus.dart'; +import '../../model/mine/app_version.dart'; +import '../../network/user_api.dart'; + class SettingController extends GetxController { final storage = GetStorage(); @@ -21,10 +24,14 @@ class SettingController extends GetxController { final version = ''.obs; final buildNumber = ''.obs; + // UserApi实例 + late UserApi _userApi; + @override Future onInit() async { super.onInit(); // 从全局依赖中获取UserApi + _userApi = Get.find(); await getAppInfo(); } // 获取验证码 @@ -42,7 +49,12 @@ class SettingController extends GetxController { Future checkVersion() async { try { - _showUpdateDialog(); + final response = await _userApi.getAppVersionInfo(os: 1, code: int.parse(buildNumber.value)); + print(response); + if (response.data.isSuccess && response.data.data != null) { + AppVersion version = response.data.data!; + _showUpdateDialog(version); + } } catch (e) { print('检测版本跟新失败: $e'); } @@ -86,8 +98,12 @@ class SettingController extends GetxController { GlobalData().logout(); } + void updateApplication(){ + + } + // 弹出版本升级的dialog - void _showUpdateDialog(){ + void _showUpdateDialog(AppVersion version){ Navigator.of(Get.context!).push(TDSlidePopupRoute( modalBarrierColor: TDTheme.of(Get.context!).fontGyColor2, slideTransitionFrom: SlideTransitionFrom.center, @@ -118,7 +134,7 @@ class SettingController extends GetxController { mainAxisSize: MainAxisSize.min, children: [ Text( - "体验全新升级v1.2.0", + version.title!, style: TextStyle( fontSize: 16.w, fontWeight: FontWeight.w500 @@ -128,49 +144,10 @@ class SettingController extends GetxController { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - width: 2.w, - height: 5.w, - margin: EdgeInsets.only( - right: 10.w, - top: 6.w - ), - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(2.w)), - color: const Color.fromRGBO(51, 51, 51, 1) - ), - ), - SizedBox( - width: 204.w, - child: Text( - "首页风格改版,更全面的内容,恍然一新的视觉用户体验。", - style: TextStyle( - fontSize: 12.w, - ), - ), - ) - ], - ), - SizedBox(height: 8.w,), - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 2.w, - height: 5.w, - margin: EdgeInsets.only( - right: 10.w, - top: 6.w - ), - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(2.w)), - color: const Color.fromRGBO(51, 51, 51, 1) - ), - ), SizedBox( width: 204.w, child: Text( - "优化了动画细节,让产品更流畅。", + version.description!, style: TextStyle( fontSize: 12.w, ), @@ -182,7 +159,7 @@ class SettingController extends GetxController { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Container( + Container( width: 113.w, height: 40.w, decoration: BoxDecoration( @@ -226,7 +203,9 @@ class SettingController extends GetxController { ), ), ), - ), + ).onTap((){ + updateApplication(); + }), ], ) ], diff --git a/lib/model/mine/app_version.dart b/lib/model/mine/app_version.dart new file mode 100644 index 0000000..7fc9718 --- /dev/null +++ b/lib/model/mine/app_version.dart @@ -0,0 +1,47 @@ +class AppVersion { + final String? id; + final String? version; + final int? versionCode; + final String? url; + final String? title; + final String? description; + final int? operatingSystem; + final bool? isForcingUpdate; + + AppVersion({ + this.id, + this.version, + this.versionCode, + this.url, + this.title, + this.description, + this.operatingSystem, + this.isForcingUpdate, + }); + + factory AppVersion.fromJson(Map json) { + return AppVersion( + id: json['id'] as String?, + version: json['version'] as String?, + versionCode: json['versionCode'] as int?, + url: json['url'] as String?, + title: json['title'] as String?, + description: json['description'] as String?, + operatingSystem: json['operatingSystem'] as int?, + isForcingUpdate: json['isForcingUpdate'] as bool?, + ); + } + + Map toJson() { + return { + 'id': id, + 'version': version, + 'versionCode': versionCode, + 'url': url, + 'title': title, + 'description': description, + 'operatingSystem': operatingSystem, + 'isForcingUpdate': isForcingUpdate, + }; + } +} \ No newline at end of file diff --git a/lib/network/api_urls.dart b/lib/network/api_urls.dart index 603ce0c..3e12017 100644 --- a/lib/network/api_urls.dart +++ b/lib/network/api_urls.dart @@ -128,4 +128,7 @@ class ApiUrls { static const String getUserPropLinkMicCard = 'dating-agency-chat-audio/user/get/user-prop/link-mic-card'; + + static const String getAppVersion = + 'dating-agency-uec/user/get/app-version/update'; } diff --git a/lib/network/user_api.dart b/lib/network/user_api.dart index 0866a8f..a547459 100644 --- a/lib/network/user_api.dart +++ b/lib/network/user_api.dart @@ -26,6 +26,7 @@ import 'package:retrofit/retrofit.dart'; import 'package:dio/dio.dart'; import '../model/home/marriage_data.dart'; +import '../model/mine/app_version.dart'; import '../model/mine/authentication_data.dart'; import '../model/mine/chat_static_data.dart'; import '../model/mine/submit_order_data.dart'; @@ -269,4 +270,10 @@ abstract class UserApi { @Body() Map data, ); + @GET(ApiUrls.getAppVersion) + Future>> getAppVersionInfo({ + @Query('operatingSystem') required int os, + @Query('versionCode') required int code, + }); + } diff --git a/lib/network/user_api.g.dart b/lib/network/user_api.g.dart index 084d23d..743d037 100644 --- a/lib/network/user_api.g.dart +++ b/lib/network/user_api.g.dart @@ -1635,6 +1635,43 @@ class _UserApi implements UserApi { return httpResponse; } + @override + Future>> getAppVersionInfo({ + required int os, + required int code, + }) async { + final _extra = {}; + final queryParameters = { + r'operatingSystem': os, + r'versionCode': code, + }; + final _headers = {}; + const Map? _data = null; + final _options = _setStreamType>>( + Options(method: 'GET', headers: _headers, extra: _extra) + .compose( + _dio.options, + '/dating-agency-uec/user/get/app-version/update', + queryParameters: queryParameters, + data: _data, + ) + .copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)), + ); + final _result = await _dio.fetch>(_options); + late BaseResponse _value; + try { + _value = BaseResponse.fromJson( + _result.data!, + (json) => AppVersion.fromJson(json as Map), + ); + } on Object catch (e, s) { + errorLogger?.logError(e, s, _options); + rethrow; + } + final httpResponse = HttpResponse(_value, _result); + return httpResponse; + } + RequestOptions _setStreamType(RequestOptions requestOptions) { if (T != dynamic && !(requestOptions.responseType == ResponseType.bytes || diff --git a/lib/pages/setting/setting_page.dart b/lib/pages/setting/setting_page.dart index 84be696..f46897a 100644 --- a/lib/pages/setting/setting_page.dart +++ b/lib/pages/setting/setting_page.dart @@ -99,9 +99,8 @@ class SettingPage extends StatelessWidget { Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/information.html")); }), TDCell(arrow: true, title: '检查更新', onClick: (cell) { - // _showUpdateDialog(); - // controller.checkVersion(); - SmartDialog.showToast('功能暂未开放'); + controller.checkVersion(); + // SmartDialog.showToast('功能暂未开放'); }, noteWidget: Text('当前版本:${controller.version.value}',style: TextStyle(fontSize: 13.w,color: const Color.fromRGBO(117, 98, 249, 1))), )