Browse Source

设置页面的版本更新

master
ZHR007 3 months ago
parent
commit
d9aa4fd130
6 changed files with 120 additions and 48 deletions
  1. 69
      lib/controller/setting/setting_controller.dart
  2. 47
      lib/model/mine/app_version.dart
  3. 3
      lib/network/api_urls.dart
  4. 7
      lib/network/user_api.dart
  5. 37
      lib/network/user_api.g.dart
  6. 5
      lib/pages/setting/setting_page.dart

69
lib/controller/setting/setting_controller.dart

@ -13,6 +13,9 @@ import 'package:tdesign_flutter/tdesign_flutter.dart';
import '../../generated/assets.dart'; import '../../generated/assets.dart';
import 'package:package_info_plus/package_info_plus.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 { class SettingController extends GetxController {
final storage = GetStorage(); final storage = GetStorage();
@ -21,10 +24,14 @@ class SettingController extends GetxController {
final version = ''.obs; final version = ''.obs;
final buildNumber = ''.obs; final buildNumber = ''.obs;
// UserApi实例
late UserApi _userApi;
@override @override
Future<void> onInit() async { Future<void> onInit() async {
super.onInit(); super.onInit();
// UserApi // UserApi
_userApi = Get.find<UserApi>();
await getAppInfo(); await getAppInfo();
} }
// //
@ -42,7 +49,12 @@ class SettingController extends GetxController {
Future<void> checkVersion() async { Future<void> checkVersion() async {
try { 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) { } catch (e) {
print('检测版本跟新失败: $e'); print('检测版本跟新失败: $e');
} }
@ -86,8 +98,12 @@ class SettingController extends GetxController {
GlobalData().logout(); GlobalData().logout();
} }
void updateApplication(){
}
// dialog // dialog
void _showUpdateDialog(){
void _showUpdateDialog(AppVersion version){
Navigator.of(Get.context!).push(TDSlidePopupRoute( Navigator.of(Get.context!).push(TDSlidePopupRoute(
modalBarrierColor: TDTheme.of(Get.context!).fontGyColor2, modalBarrierColor: TDTheme.of(Get.context!).fontGyColor2,
slideTransitionFrom: SlideTransitionFrom.center, slideTransitionFrom: SlideTransitionFrom.center,
@ -118,7 +134,7 @@ class SettingController extends GetxController {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
"体验全新升级v1.2.0",
version.title!,
style: TextStyle( style: TextStyle(
fontSize: 16.w, fontSize: 16.w,
fontWeight: FontWeight.w500 fontWeight: FontWeight.w500
@ -128,49 +144,10 @@ class SettingController extends GetxController {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ 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( SizedBox(
width: 204.w, width: 204.w,
child: Text( child: Text(
"优化了动画细节,让产品更流畅。",
version.description!,
style: TextStyle( style: TextStyle(
fontSize: 12.w, fontSize: 12.w,
), ),
@ -182,7 +159,7 @@ class SettingController extends GetxController {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Container(
Container(
width: 113.w, width: 113.w,
height: 40.w, height: 40.w,
decoration: BoxDecoration( decoration: BoxDecoration(
@ -226,7 +203,9 @@ class SettingController extends GetxController {
), ),
), ),
), ),
),
).onTap((){
updateApplication();
}),
], ],
) )
], ],

47
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<String, dynamic> 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<String, dynamic> toJson() {
return {
'id': id,
'version': version,
'versionCode': versionCode,
'url': url,
'title': title,
'description': description,
'operatingSystem': operatingSystem,
'isForcingUpdate': isForcingUpdate,
};
}
}

3
lib/network/api_urls.dart

@ -128,4 +128,7 @@ class ApiUrls {
static const String getUserPropLinkMicCard = static const String getUserPropLinkMicCard =
'dating-agency-chat-audio/user/get/user-prop/link-mic-card'; 'dating-agency-chat-audio/user/get/user-prop/link-mic-card';
static const String getAppVersion =
'dating-agency-uec/user/get/app-version/update';
} }

7
lib/network/user_api.dart

@ -26,6 +26,7 @@ import 'package:retrofit/retrofit.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import '../model/home/marriage_data.dart'; import '../model/home/marriage_data.dart';
import '../model/mine/app_version.dart';
import '../model/mine/authentication_data.dart'; import '../model/mine/authentication_data.dart';
import '../model/mine/chat_static_data.dart'; import '../model/mine/chat_static_data.dart';
import '../model/mine/submit_order_data.dart'; import '../model/mine/submit_order_data.dart';
@ -269,4 +270,10 @@ abstract class UserApi {
@Body() Map<String, dynamic> data, @Body() Map<String, dynamic> data,
); );
@GET(ApiUrls.getAppVersion)
Future<HttpResponse<BaseResponse<AppVersion>>> getAppVersionInfo({
@Query('operatingSystem') required int os,
@Query('versionCode') required int code,
});
} }

37
lib/network/user_api.g.dart

@ -1635,6 +1635,43 @@ class _UserApi implements UserApi {
return httpResponse; return httpResponse;
} }
@override
Future<HttpResponse<BaseResponse<AppVersion>>> getAppVersionInfo({
required int os,
required int code,
}) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{
r'operatingSystem': os,
r'versionCode': code,
};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
final _options = _setStreamType<HttpResponse<BaseResponse<AppVersion>>>(
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<Map<String, dynamic>>(_options);
late BaseResponse<AppVersion> _value;
try {
_value = BaseResponse<AppVersion>.fromJson(
_result.data!,
(json) => AppVersion.fromJson(json as Map<String, dynamic>),
);
} on Object catch (e, s) {
errorLogger?.logError(e, s, _options);
rethrow;
}
final httpResponse = HttpResponse(_value, _result);
return httpResponse;
}
RequestOptions _setStreamType<T>(RequestOptions requestOptions) { RequestOptions _setStreamType<T>(RequestOptions requestOptions) {
if (T != dynamic && if (T != dynamic &&
!(requestOptions.responseType == ResponseType.bytes || !(requestOptions.responseType == ResponseType.bytes ||

5
lib/pages/setting/setting_page.dart

@ -99,9 +99,8 @@ class SettingPage extends StatelessWidget {
Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/information.html")); Get.to(() => OpenWebView(url: "https://www.quzhaoqin.com/information.html"));
}), }),
TDCell(arrow: true, title: '检查更新', onClick: (cell) { 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))), noteWidget: Text('当前版本:${controller.version.value}',style: TextStyle(fontSize: 13.w,color: const Color.fromRGBO(117, 98, 249, 1))),
) )

Loading…
Cancel
Save