提交 07b17b5c authored 作者: yueweilu's avatar yueweilu

版本升级

上级 9dc5cafd
...@@ -150,13 +150,13 @@ abstract class MineAPI { ...@@ -150,13 +150,13 @@ abstract class MineAPI {
/// 9、获取最新版本 /// 9、获取最新版本
/// ///
static Future <UpdateModel> update() async { static Future <UModel> update() async {
final result = await HttpService.to.post( final result = await HttpService.to.post(
'/v1/members/Information/getVersion', '/v1/members/Information/getVersion',
params: {}, params: {},
); );
if (result.data is! Map) return UpdateModel(); if (result.data is! Map) return UModel();
return UpdateModel.fromJson(result.data); return UModel.fromJson(result.data);
} }
/// 10、版本介绍 /// 10、版本介绍
......
...@@ -125,13 +125,13 @@ class CouponModel { ...@@ -125,13 +125,13 @@ class CouponModel {
} }
/// 更新模型 /// 更新模型
class UpdateModel { class UModel {
UpdateModel({ UModel({
this.version, this.version,
this.url, this.url,
this.remarks,}); this.remarks,});
UpdateModel.fromJson(dynamic json) { UModel.fromJson(dynamic json) {
version = json['version']; version = json['version'];
url = json['url']; url = json['url'];
remarks = json['remarks']; remarks = json['remarks'];
...@@ -139,10 +139,10 @@ class UpdateModel { ...@@ -139,10 +139,10 @@ class UpdateModel {
String? version; String? version;
String? url; String? url;
String? remarks; String? remarks;
UpdateModel copyWith({ String? version, UModel copyWith({ String? version,
String? url, String? url,
String? remarks, String? remarks,
}) => UpdateModel( version: version ?? this.version, }) => UModel( version: version ?? this.version,
url: url ?? this.url, url: url ?? this.url,
remarks: remarks ?? this.remarks, remarks: remarks ?? this.remarks,
); );
......
library user_set; library user_set;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app_update/azhon_app_update.dart';
import 'package:flutter_app_update/update_model.dart';
import 'package:flutter_book/theme.dart'; import 'package:flutter_book/theme.dart';
import 'package:flutter_book/utils/index.dart'; import 'package:flutter_book/utils/index.dart';
import 'package:flutter_book/widgets/index.dart'; import 'package:flutter_book/widgets/index.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:package_info_plus/package_info_plus.dart';
import '../../apis/index.dart'; import '../../apis/index.dart';
import '../../models/index.dart'; import '../../models/index.dart';
......
...@@ -8,6 +8,9 @@ class UserSetPage extends StatefulWidget { ...@@ -8,6 +8,9 @@ class UserSetPage extends StatefulWidget {
} }
class _UserSetPageState extends State<UserSetPage> { class _UserSetPageState extends State<UserSetPage> {
late UModel _getModel;
String url =
"https://imtt.dd.qq.com/16891/apk/FA48766BA12A41A1D619CB4B152889C6.apk?fsname=com.estrongs.android.pop_4.2.3.3_10089.apk&csr=1bbd";
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
...@@ -54,11 +57,7 @@ class _UserSetPageState extends State<UserSetPage> { ...@@ -54,11 +57,7 @@ class _UserSetPageState extends State<UserSetPage> {
), ),
GestureDetector( GestureDetector(
onTap: () async{ onTap: () async{
UpdateModel model = await MineAPI.update(); _checkUpdates();
// 有新版本
if (model.version !=null){
}
}, },
child: Container( child: Container(
color: Colors.white, color: Colors.white,
...@@ -130,4 +129,62 @@ class _UserSetPageState extends State<UserSetPage> { ...@@ -130,4 +129,62 @@ class _UserSetPageState extends State<UserSetPage> {
ClearCache().clearApplicationCache(); ClearCache().clearApplicationCache();
Toast.show('清除完成'); Toast.show('清除完成');
} }
void _checkUpdates() async {
UModel model = await MineAPI.update();
_getModel = model;
final packageInfo = await PackageInfo.fromPlatform();
int getVersion = int.parse(model.version!.replaceAll('.', ''));
int localVersion = int.parse(packageInfo.version.replaceAll('.', ''));
if (localVersion < getVersion){
_showUpdateDialog(false);
}
}
///Flutter侧处理升级对话框
///[forcedUpgrade] 是否强制升级
_showUpdateDialog(bool forcedUpgrade) {
showDialog(
context: context,
barrierDismissible: !forcedUpgrade,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () => Future.value(!forcedUpgrade),
child: AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
),
title: const Text('发现新版本',style: TextStyle(fontSize: 16,fontWeight: Fonts.medium,color: Colours.c3),),
content: Text(_getModel.remarks??'',style: const TextStyle(fontSize: 13,fontWeight: Fonts.medium,color: Colours.c3),),
actions: <Widget>[
if (!forcedUpgrade)
TextButton(
child: const Text('取消',style: TextStyle(color: Colours.c3),),
onPressed: () => Navigator.of(context).pop(),
),
TextButton(
child: const Text('升级'),
onPressed: () {
_appUpdate();
if (!forcedUpgrade) {
Navigator.of(context).pop();
}
},
),
],
),
);
},
);
}
/// TODO: 苹果市场app地址
_appUpdate() {
UpdateModel model = UpdateModel(
_getModel.url!,
"zijing.apk",
"ic_launcher",
'https://itunes.apple.com/cn/app/抖音/id1142110895',
);
AzhonAppUpdate.update(model).then((value) => debugPrint('$value'));
}
} }
part of utils; part of utils;
abstract class Access { abstract class Access {
/// 图片权限
static Future<bool> photos() async { static Future<bool> photos() async {
if (Platform.isIOS) { if (Platform.isIOS) {
final result = await [Permission.photos].request(); final result = await [Permission.photos].request();
...@@ -14,5 +16,13 @@ abstract class Access { ...@@ -14,5 +16,13 @@ abstract class Access {
return false; return false;
} }
/// 打开设置
static Future<void> setting() async => await openAppSettings(); static Future<void> setting() async => await openAppSettings();
/// 存储权限
static Future<bool> storage() async {
final result = await [Permission.storage].request();
return result[Permission.storage] == PermissionStatus.granted;
}
} }
...@@ -166,6 +166,14 @@ packages: ...@@ -166,6 +166,14 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_app_update:
dependency: "direct main"
description:
name: flutter_app_update
sha256: "2202e6e6d49eacc571304e5a6a5404f893382b492029d01d33b3bfb9af1c2f25"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.4"
flutter_easyloading: flutter_easyloading:
dependency: "direct main" dependency: "direct main"
description: description:
......
...@@ -93,8 +93,10 @@ dependencies: ...@@ -93,8 +93,10 @@ dependencies:
fluwx: ^4.4.9 fluwx: ^4.4.9
# #
image_picker: 0.8.7+5 image_picker: 0.8.7+5
# # 获取package 信息
package_info_plus: ^4.2.0 package_info_plus: ^4.2.0
# 版本更新
flutter_app_update: ^3.0.4
dev_dependencies: dev_dependencies:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论