flutter 更新apk
创始人
2024-11-14 13:35:08
import 'package:path_provider/path_provider.dart';   //app_installer: ^1.0.0 import 'package:app_installer/app_installer.dart';    //path_provider   //查询是否更新   Future ifUpdate(BuildContext buildContext) async {     String jsonFlag = await LocalStorage.get("apkJson");     var s = jsonFlag;     var dio = Dio();     final response = await dio.get(s);     print(response.data);     if(response.data != null){       setState(() {        });       apkJson = response.data;   //json格式{"version":"3.0.1","outputFile":"http://192.168.200.201/test/news.apk","versionName":"ydhl"}     }     PackageInfo packageInfo = await PackageInfo.fromPlatform();     //如果你设置的版本号 于你本机上的App的版本号 不一致 弹出下载框     if (apkJson["version"] != "packageInfo.version") {       print(packageInfo.version);       Msg.dlg(context: context,title: "版本不是最新版,请确定是否更新").then((value)=>{         if(value == ""){           _installApk(apkJson["outputFile"])           // download2()         }       });     }else{       toast("已是最新版");     }   }
/// 下载安卓更新包   Future downloadAndroid(String url) async {     /// 创建存储文件     Directory storageDir = await getExternalStorageDirectory();     String storagePath = storageDir.path;     final directory = await getTemporaryDirectory();     File file = new File("${storageDir.path}/ydhl.apk");      if (!file.existsSync()) {       file.createSync();     }     try {       /// 发起下载请求        Response response = await Dio().download(url,file.path,           options: Options(             followRedirects: false,           ),onProgress: (int count, int total){             if (total != -1) {               //更新界面进度               _value = count / total;               print("------"+_value.toString());               setState(() {                 _value =_value;               });             }           });       // file.writeAsBytesSync(response.data);       return file;     } catch (e) {       showError("下载失败");       debugPrint(e.toString());       setState(() {        });     }   }
/// 安装apk   Future _installApk(String url) async {     File _apkFile = await downloadAndroid(url);     String _apkFilePath = _apkFile.path;      if (_apkFilePath.isEmpty) {       print("make sure the apk file is set");       return;     }     AppInstaller.installApk(_apkFilePath)         .then((ell){       toast("下载成功");     }).catchError((e){       showError("install apk error: $e");     });   }

 更新界面

与界面都在stack中

Visibility(           visible: (_value*100).toInt() != 0 && (_value*100).toInt() != 100,           child: Stack(             children: [               Container(                 height: double.infinity,                 width: double.infinity,                 color: Colors.black12,               ),               Center(                 child: Column(                   mainAxisAlignment: MainAxisAlignment.center,                   crossAxisAlignment: CrossAxisAlignment.center,                   children: [                     Container(                       child: Text("下载中...",style: TextStyle(                         color: Colors.blue,                           decoration: TextDecoration.none                       ),),                     ),                     SizedBox(height: 10,),                     SizedBox(                       height: 20,                       width: 300,                       child: ClipRRect(                         borderRadius: const BorderRadius.all(Radius.circular(100)),                         child: LinearProgressIndicator(                           value: _value,                           backgroundColor: const Color(0xFF7E7F88).withOpacity(0.15),                           valueColor: const AlwaysStoppedAnimation(Colors.green),                         ),                       ),                     ),                   ],                 ),               ),             ],           ),         ),

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...