笔者作为一个懒货,如非必要真的是不想造轮子,眼看app要上架还没有更新功能,就随便找了找,可以是使用bugly提供的存储+流量然后使用xupdate进行本地更新,废话不说,代码如下:
void _checkUpgrade() {
FlutterBugly.checkUpgrade(isManual: false, isSilence: false)
.then((UpgradeInfo info) {
if (info != null && info.id != null) {
UpdateEntity updateEntity = new UpdateEntity(
hasUpdate: true,
isForce: info.upgradeType == 2,
versionCode: info.versionCode,
versionName: info.versionName,
updateContent: info.newFeature,
downloadUrl: info.apkUrl,
apkMd5: info.apkMd5,
apkSize: (info.fileSize / 1000).ceil());
Const.log(info);
initXUpdate(updateEntity);
} else {
initXUpdate(null);
}
});
}
void initXUpdate(UpdateEntity updateEntity) {
if (Platform.isAndroid) {
FlutterXUpdate.init(
///是否输出日志
debug: Const.isDebug,
///是否使用post请求
isPost: false,
///post请求是否是上传json
isPostJson: false,
///是否开启自动模式
isWifiOnly: false,
///是否开启自动模式
isAutoMode: false,
///需要设置的公共参数
supportSilentInstall: false,
///在下载过程中,如果点击了取消的话,是否弹出切换下载方式的重试提示弹窗
enableRetry: false)
.then((value) {
Const.log("初始化成功: $value");
}).catchError((error) {
print(error);
});
if (updateEntity != null) {
FlutterXUpdate.updateByInfo(
updateEntity: updateEntity,
supportBackgroundUpdate: false,
themeColor: '#FF5000',
topImageRes: 'bg_update_top');
} else {
///这里加了一个更新地址以防bugly挂掉
FlutterXUpdate.checkUpdate(
url: Const.updateUrl,
supportBackgroundUpdate: false,
themeColor: '#FF5000',
topImageRes: 'bg_update_top');
}
} else {
//todo iOS更新支持,此处ios更新自由发挥
Const.log("ios暂不支持XUpdate更新");
}
}
initState()中调用_checkUpgrade();即可