flutter更新弹窗

  static void showUpdateDialog(String version, String url, String content,
      bool isForceUpgrade, String createTime,
      {String? md5Code, Function(bool)? callback}) {
    GlobalKey<UpdateDialogState> _dialogKey = new GlobalKey();
    showDialog(
      barrierColor: Color(0xb2000000),
      barrierDismissible: false,
      context: Get.context!,
      builder: (_) => WillPopScope(
          onWillPop: () async {
            return Future.value(!isForceUpgrade);
          },
          child: UpdateDialog(
            key: _dialogKey,
            version: version,
            content: content,
            createTime: createTime,
            isForceUpgrade: isForceUpgrade,
            onClickWhenDownload: (_msg) {
              ToastUtil.error(_msg);
              //提示不要重复下载
            },
            onClickWhenNotDownload: () async {
              if (!await Permissions.checkPermission(
                  Get.context!, Permission.storage.value)) {
                ToastUtil.success('请先开启存储权限');
                return;
              }
              String fileName = getFlieName(url);
              Directory? storageDir = await getExternalStorageDirectory();
              String storagePath = storageDir?.path ?? "";
              String path = '$storagePath/${fileName}';
              File file = File(path);
              final exist = await file.exists();
              if (exist) {
                print('zai');
                final c = await file.length();
                print(c);
                if (c != 0) {
                  final sdkCode = await LoacalStorage().getJSON('code');
                  print(sdkCode == md5Code);
                  if (sdkCode == md5Code) {
                    ToastUtil.success('已下载,去安装',
                        position: ToastPosition.center);
                    Future.delayed(Duration(seconds: 1), () {
                      print(path);
                      InstallPlugin.installApk(path, 'com.topzhiyin.tongpin')
                          .then((result) {
                        print('install apk $result');
                      }).catchError((error) {
                        print('install apk error: $error');
                      });
                    });
                  } else {
                    await DioUtil.getInstance()!.download(
                      url,
                      path,
                      onError: (s, r) {
                        //ToastUtil.error(r!);
                        callback?.call(false);
                      },
                      onProgress: (count, total) async {
                        _dialogKey.currentState?.progress = count / total;

                        if (count == total) {
                          print(path);
                          final code = EncryptUtil.file2md5(File(path));
                          LoacalStorage().setJSON('code', code); //2022-05-29
                          callback?.call(false);
                          InstallPlugin.installApk(
                                  path, 'com.topzhiyin.tongpin')
                              .then((result) {
                            print('install apk $result');
                          }).catchError((error) {
                            print('install apk err
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值