void updateappx() async {
  var value = await getApplicationDocumentsDirectory();
  var pathx = value.path;
  File file = File('$pathx/version.txt');
  if (await file.exists()) {
    String localVersion = await file.readAsString();
    var dio = Dio();
    var value = await dio.get('https://update-nepucouseupdate-bmgwsddxxl.cn-hongkong.fcapp.run/update');
    String version = value.data[0]['version'];
    if (version != Global.version && version != localVersion) {
      await Dialogs.materialDialog(
        color: Colors.white,
        msg: '要下载吗?',
        title: '有新版本啦,版本号是$version
${value.data[0]['description']}',
        lottieBuilder: Lottie.asset(
          'assets/rockert-new.json',
          fit: BoxFit.contain,
        ),
        context: context,
        actions: [
          IconButton(
            onPressed: () {
              file.writeAsString(version);
              Navigator.pop(context);
            },
            icon: Icon(Icons.cancel_outlined),
          ),
          IconButton(
            onPressed: () async {
              file.writeAsString(version);
              Navigator.pop(context);
              if (Platform.isAndroid) {
                ProgressDialog pd = ProgressDialog(context: context);
                pd.show(
                    max: 100,
                    msg: '准备下载更新...',
                    msgMaxLines: 5,
                    completed: Completed(
                      completedMsg: "下载完成!",
                      completedImage: AssetImage("assets/completed.gif"),
                      completionDelay: 2500,
                    ));
                await EasyAppInstaller.instance.downloadAndInstallApk(
                  fileUrl: value.data[0]['link'],
                  fileDirectory: "updateApk",
                  fileName: "newApk.apk",
                  explainContent: "快去开启权限!!!",
                  onDownloadingListener: (progress) {
                    if (progress < 100) {
                      pd.update(value: progress.toInt(), msg: '安装包正在下载...');
                    } else {
                      pd.update(value: progress.toInt(), msg: '安装包下载完成...');
                    }
                  },
                  onCancelTagListener: (cancelTag) {
                    _cancelTag = cancelTag;
                  },
                );
              } else {
                Clipboard.setData(ClipboardData(
                    text: 'https://wwai.lanzouy.com/b02pwpe5e?password=4huv'));
                AchievementView(context,
                    title: "复制成功",
                    subTitle: '请手动去浏览器粘贴网址,密码是4huv,请手动下载对应您的平台',
                    icon: Icon(
                      Icons.insert_emoticon,
                      color: Colors.white,
                    ),
                    color: Colors.green,
                    duration: Duration(seconds: 15),
                    isCircle: true, listener: (status) {
                  print(status);
                })..show();
              }
            },
            icon: Icon(Icons.check),
          ),
        ],
      );
    }
  } else {
    await file.create();
    if (await file.exists()) {
      var dio = Dio();
      var value = await dio.get('https://update-nepucouseupdate-bmgwsddxxl.cn-hongkong.fcapp.run/update');
      String version = value.data[0]['version'];
      if (version != Global.version && version != localVersion) {
        await Dialogs.materialDialog(
          color: Colors.white,
          msg: '要下载吗?',
          title: '有新版本啦,版本号是$version
${value.data[0]['description']}',
          lottieBuilder: Lottie.asset(
            'assets/rockert-new.json',
            fit: BoxFit.contain,
          ),
          context: context,
          actions: [
            IconButton(
              onPressed: () {
                file.writeAsString(version);
                Navigator.pop(context);
              },
              icon: Icon(Icons.cancel_outlined),
            ),
            IconButton(
              onPressed: () async {
                Navigator.pop(context);
                ProgressDialog pd = ProgressDialog(context: context);
                pd.show(
                    max: 100,
                    msg: '准备下载更新...',
                    msgMaxLines: 5,
                    completed: Completed(
                      completedMsg: "下载完成!",
                      completedImage: AssetImage("assets/completed.gif"),
                      completionDelay: 2500,
                    ));
                await EasyAppInstaller.instance.downloadAndInstallApk(
                  fileUrl: value.data[0]['link'],
                  fileDirectory: "updateApk",
                  fileName: "newApk.apk",
                  explainContent: "快去开启权限!!!",
                  onDownloadingListener: (progress) {
                    if (progress < 100) {
                      pd.update(value: progress.toInt(), msg: '安装包正在下载...');
                    } else {
                      file.writeAsString(version);
                      pd.update(value: progress.toInt(), msg: '安装包下载完成...');
                    }
                  },
                  onCancelTagListener: (cancelTag) {
                    _cancelTag = cancelTag;
                  },
                );
              },
              icon: Icon(Icons.check),
            ),
          ],
        );
      }
    }
  }
}
Flutter 应用更新功能实现代码优化

原文地址: http://www.cveoy.top/t/topic/ojHt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录