提交 b1147346 authored 作者: 史晓晨's avatar 史晓晨

feat:①支持替换更新弹框顶部图片②优化oss下载信息判断逻辑③修改各环境oss信息获取接口传参

上级 8d5c32ae
import 'package:apk_update/app_upgrade_factory.dart'; import 'package:apk_update/app_upgrade_factory.dart';
import 'package:apk_update/core/common/app_upgrade_config.dart'; import 'package:apk_update/core/common/app_upgrade_config.dart';
import 'package:apk_update/utils/image_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
...@@ -99,6 +100,7 @@ class _MyAppState extends State<MyApp> { ...@@ -99,6 +100,7 @@ class _MyAppState extends State<MyApp> {
appleId: "1585610919", appleId: "1585610919",
headers: {"product-code": "carrier-driver-app", "model": "TASal00"}, headers: {"product-code": "carrier-driver-app", "model": "TASal00"},
versionNumber: 1, versionNumber: 1,
topImageProvider: ImageUtils.getAssetImage('update_head')
), ),
); );
......
...@@ -43,6 +43,7 @@ class AppUpgradeControl { ...@@ -43,6 +43,7 @@ class AppUpgradeControl {
title: versionInfo.name, title: versionInfo.name,
content: versionInfo.content, content: versionInfo.content,
versionForce: versionInfo.versionForce == true, versionForce: versionInfo.versionForce == true,
topImageProvider: config.topImageProvider,
onAppMarket: (String? url) { onAppMarket: (String? url) {
if (Platform.isIOS) { if (Platform.isIOS) {
jumpAppStore(appleId ?? ""); jumpAppStore(appleId ?? "");
......
import 'package:flutter/material.dart';
/// 配置类 /// 配置类
class AppUpgradeConfig { class AppUpgradeConfig {
/// 域名 /// 域名
...@@ -27,6 +29,9 @@ class AppUpgradeConfig { ...@@ -27,6 +29,9 @@ class AppUpgradeConfig {
/// 增加请求头 /// 增加请求头
final Map<String, dynamic>? headers; final Map<String, dynamic>? headers;
/// 顶部图片
final ImageProvider? topImageProvider;
const AppUpgradeConfig({ const AppUpgradeConfig({
required this.baseUrl, required this.baseUrl,
this.onceDay = false, this.onceDay = false,
...@@ -37,5 +42,6 @@ class AppUpgradeConfig { ...@@ -37,5 +42,6 @@ class AppUpgradeConfig {
this.productNo, this.productNo,
this.type, this.type,
this.headers, this.headers,
this.topImageProvider,
}); });
} }
...@@ -46,8 +46,13 @@ class OSSDownloadImpl implements DownloadService { ...@@ -46,8 +46,13 @@ class OSSDownloadImpl implements DownloadService {
onSuccess?.call(apkFile.path); onSuccess?.call(apkFile.path);
return; return;
} }
// 删除历史下载文件
await deleteFiles(Directory(path));
var ossInfo = await getOssInfo(); var ossInfo = await getOssInfo();
if (ossInfo == null) {
ToastUtil.showToast("oss下载失败");
return;
}
// 使用OSS下载 // 使用OSS下载
var ak = ossInfo?['onceAccessKeyId']; var ak = ossInfo?['onceAccessKeyId'];
var sk = ossInfo?["onceAccessKeySecret"]; var sk = ossInfo?["onceAccessKeySecret"];
...@@ -118,4 +123,14 @@ class OSSDownloadImpl implements DownloadService { ...@@ -118,4 +123,14 @@ class OSSDownloadImpl implements DownloadService {
String getPathByObjectKey(String url) { String getPathByObjectKey(String url) {
return p.dirname(url); return p.dirname(url);
} }
/// 获取oss bucketName
String getOssBucketName() {
if (baseUrl.contains("gateway.devclx.cn") ||
baseUrl.contains("gateway.testclx.cn")) {
return "clx-dev";
} else {
return "clx-prod";
}
}
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
class ImageUtils { class ImageUtils {
static ImageProvider getNetworkImage(String name, {String format = 'png'}) { static ImageProvider getNetworkImage(String name, {String format = 'png'}) {
return NetworkImage(name); return NetworkImage(name);
} }
static ImageProvider getAssetImage(String name, {String format = 'png'}) { static ImageProvider getAssetImage(String name,
return AssetImage(getImgPath(name, format: format)); {String format = 'png', String? package}) {
return AssetImage(getImgPath(name, format: format),package: package);
} }
static String getImgPath(String? name, {String format = 'png'}) { static String getImgPath(String? name, {String format = 'png'}) {
......
import 'dart:io';
import 'package:flustars_flutter3/flustars_flutter3.dart'; import 'package:flustars_flutter3/flustars_flutter3.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
...@@ -11,6 +13,16 @@ Future<String?> createDir() async { ...@@ -11,6 +13,16 @@ Future<String?> createDir() async {
return path; return path;
} }
Future<void> deleteFiles(Directory directory, {String suffix = ".apk"}) async {
if (!await directory.exists()) return;
await for (var entity in directory.list(recursive: true)) {
if (entity is File && entity.path.toLowerCase().endsWith(suffix)) {
await entity.delete();
}
}
}
/// 打开浏览器 /// 打开浏览器
Future<void> openBrowser(String stringUrl) async { Future<void> openBrowser(String stringUrl) async {
final Uri url = Uri.parse(stringUrl); final Uri url = Uri.parse(stringUrl);
......
...@@ -24,6 +24,9 @@ class AppUpgradeDialog extends StatelessWidget { ...@@ -24,6 +24,9 @@ class AppUpgradeDialog extends StatelessWidget {
/// 跳转应用市场 /// 跳转应用市场
final ValueChanged<String?>? onAppMarket; final ValueChanged<String?>? onAppMarket;
/// 顶部图片
final ImageProvider? topImageProvider;
AppUpgradeDialog({ AppUpgradeDialog({
Key? key, Key? key,
this.title, this.title,
...@@ -31,6 +34,7 @@ class AppUpgradeDialog extends StatelessWidget { ...@@ -31,6 +34,7 @@ class AppUpgradeDialog extends StatelessWidget {
this.versionForce = false, this.versionForce = false,
this.onDownLoad, this.onDownLoad,
this.onAppMarket, this.onAppMarket,
this.topImageProvider,
}) : super(key: key); }) : super(key: key);
@override @override
...@@ -119,7 +123,8 @@ class AppUpgradeDialog extends StatelessWidget { ...@@ -119,7 +123,8 @@ class AppUpgradeDialog extends StatelessWidget {
topRight: Radius.circular(8.0), topRight: Radius.circular(8.0),
), ),
image: DecorationImage( image: DecorationImage(
image: ImageUtils.getAssetImage('update_head'), image: topImageProvider ??
ImageUtils.getAssetImage('update_head', package: "apk_update"),
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
......
...@@ -55,9 +55,8 @@ flutter: ...@@ -55,9 +55,8 @@ flutter:
pluginClass: ApkUpdatePlugin pluginClass: ApkUpdatePlugin
# To add assets to your plugin package, add an assets section, like this: # To add assets to your plugin package, add an assets section, like this:
# assets: assets:
# - images/a_dot_burr.jpeg - assets/images/
# - images/a_dot_ham.jpeg
# #
# For details regarding assets in packages, see # For details regarding assets in packages, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/assets-and-images/#from-packages
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论