完成app更新时显示下载进度条功能
This commit is contained in:
parent
1361e36be3
commit
743046afe2
|
@ -166,6 +166,7 @@ class ApplicationController extends GetxController {
|
||||||
await Future.delayed(Duration(seconds: 3), () async {
|
await Future.delayed(Duration(seconds: 3), () async {
|
||||||
if (ConfigService.isIOS == false &&
|
if (ConfigService.isIOS == false &&
|
||||||
await Permission.storage.isGranted == false) {
|
await Permission.storage.isGranted == false) {
|
||||||
|
// 请求权限
|
||||||
await [Permission.storage].request();
|
await [Permission.storage].request();
|
||||||
}
|
}
|
||||||
if (await Permission.storage.isGranted) {
|
if (await Permission.storage.isGranted) {
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:dio/dio.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart' hide Response;
|
||||||
import 'package:install_plugin/install_plugin.dart';
|
import 'package:install_plugin/install_plugin.dart';
|
||||||
import 'package:news_getx/data/model/app.dart';
|
import 'package:news_getx/data/model/app.dart';
|
||||||
import 'package:news_getx/data/repository/app_repository.dart';
|
import 'package:news_getx/data/repository/app_repository.dart';
|
||||||
|
@ -10,6 +11,38 @@ import 'package:news_getx/modules/widgets/toast.dart';
|
||||||
import 'package:news_getx/utils/http.dart';
|
import 'package:news_getx/utils/http.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
|
class DownloadController extends GetxController {
|
||||||
|
// 进度条
|
||||||
|
var _progressValue = 0.0.obs;
|
||||||
|
|
||||||
|
double get progressValue => _progressValue.value;
|
||||||
|
|
||||||
|
set progressValue(double value) {
|
||||||
|
_progressValue.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<Response> download(String fileUrl, String fullPath) async {
|
||||||
|
progressValue = 0;
|
||||||
|
return await HttpUtil().dio.download(
|
||||||
|
fileUrl,
|
||||||
|
fullPath,
|
||||||
|
options: Options(
|
||||||
|
receiveTimeout: Duration(minutes: 5),
|
||||||
|
),
|
||||||
|
onReceiveProgress: (count, total) {
|
||||||
|
final value = count / total;
|
||||||
|
if (progressValue != value) {
|
||||||
|
if (progressValue < 1.0) {
|
||||||
|
progressValue = count / total;
|
||||||
|
} else {
|
||||||
|
progressValue = 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// App 更新
|
/// App 更新
|
||||||
class AppUpdateUtil {
|
class AppUpdateUtil {
|
||||||
static AppUpdateUtil _instance = AppUpdateUtil._internal();
|
static AppUpdateUtil _instance = AppUpdateUtil._internal();
|
||||||
|
@ -84,9 +117,33 @@ class AppUpdateUtil {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isFileFound) {
|
if (!isFileFound) {
|
||||||
await HttpUtil().dio.download(fileUrl, fullPath);
|
final DownloadController downloadController = Get.put(
|
||||||
|
DownloadController());
|
||||||
|
Get.dialog(
|
||||||
|
AlertDialog(
|
||||||
|
title: Text('文件下载中'),
|
||||||
|
content: Obx(() {
|
||||||
|
final percentage = downloadController.progressValue * 100;
|
||||||
|
|
||||||
|
if (percentage == 100) {
|
||||||
|
Get.back();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Row(
|
||||||
|
children: [
|
||||||
|
Text('正在下载'),
|
||||||
|
Expanded(child: LinearProgressIndicator(
|
||||||
|
value: downloadController.progressValue)),
|
||||||
|
Text(
|
||||||
|
"${percentage.toStringAsFixed(0)}%"),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
barrierDismissible: false,
|
||||||
|
);
|
||||||
|
await downloadController.download(fileUrl, fullPath);
|
||||||
}
|
}
|
||||||
// 安装
|
// 安装
|
||||||
await InstallPlugin.installApk(fullPath);
|
await InstallPlugin.installApk(fullPath);
|
||||||
|
|
Loading…
Reference in New Issue