update_model.dart
3.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import 'dart:io';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:install_plugin/install_plugin.dart';
import 'package:one_key/models/version.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/res/colors.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
class UpdateModel{
int _progress;//下载进度
Function _setState;
//检查更新
Future<Version> checkUpdate(BuildContext context){
Future.delayed(new Duration(milliseconds: 1000),(){
if(Random().nextInt(10)>0){
Version version=Version.fromJson({
"version":"v1.0.3",
"file_url":"http://xt03.colorcun.com/uploads/20191105/67e38355c41528b24a97e9ac71a221ea.apk",
"content":"1.bug修复;\n2.功能更新;"
});
showUpdateDialog(context, version);
}
});
}
//拒绝订单弹框
showUpdateDialog(BuildContext context,Version version){
showDialog(context: context,builder: (context){
return AlertDialog(
title: Text("版本更新${version.version}"),
titleTextStyle: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(32)),
content: Text("${version.content}"),
contentTextStyle:TextStyle(color: MyColours.color_828282,fontSize: ScreenUtil().setSp(28)),
actions: <Widget>[
FlatButton(
child: Text("取消",style: TextStyle(fontSize: ScreenUtil().setSp(32)),),
onPressed: (){
Navigator.of(context).pop();
},
),
FlatButton(
child: Text("去更新",style: TextStyle(fontSize: ScreenUtil().setSp(32)),),
onPressed: () async {
Navigator.of(context).pop();
if(Platform.isAndroid){
downloadApk(context,version.file_url);
}else{
InstallPlugin.gotoAppStore("itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1510697490");
}
},
)
],
);
});
}
//下载更新版本
Future<void> downloadApk(BuildContext context,String file_url) async {
Map<PermissionGroup, PermissionStatus> permissions =
await PermissionHandler().requestPermissions([PermissionGroup.storage]);
if(permissions[PermissionGroup.storage] == PermissionStatus.granted){
final dir=await getExternalStorageDirectory();
String savePath=dir.path+"/one_key";
DioUtil().download(file_url, savePath,onProgress: (received,total){
int progress=((received/total)*100).round();
_progress=progress;
_setState((){});
if(received==total){//下载完成
InstallPlugin.installApk(savePath,"com.naji.one_key");
}
});
}
}
//显示下载进度条
Function showDownloadProgress(BuildContext context){
showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return AlertDialog(
content: StatefulBuilder(builder: (context, setState) {
if(_progress==100){
Navigator.of(context).pop();
}
_setState=setState;
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
CircularProgressIndicator(),
Padding(
padding: EdgeInsets.only(top: 26),
child: Text("正在下载...${_progress}%"),
)
],
);
}));
});
return _setState;
}
}