no message

This commit is contained in:
2025-11-14 13:55:55 +08:00
parent 13d5a31197
commit f2ab06e4bb

View File

@@ -13,7 +13,9 @@ class LookImagesTool {
static lookImages({ static lookImages({
required List<String> listData, required List<String> listData,
int? currentPage, int? currentPage,
void Function(String)? onCallBack,
String? oSSAccessKeyId, String? oSSAccessKeyId,
Function? callBack,
String? policy, String? policy,
String? callback, String? callback,
String? signature, String? signature,
@@ -46,6 +48,7 @@ class LookImagesWidget extends StatefulWidget {
final String? signature; final String? signature;
final String? ossDirectory; final String? ossDirectory;
final String? ossHost; final String? ossHost;
final void Function(String)? onCallBack;
const LookImagesWidget({ const LookImagesWidget({
super.key, super.key,
@@ -57,6 +60,7 @@ class LookImagesWidget extends StatefulWidget {
this.signature, this.signature,
this.ossDirectory, this.ossDirectory,
this.ossHost, this.ossHost,
this.onCallBack,
}); });
@override @override
@@ -129,16 +133,12 @@ class _LookImagesWidgetState extends State<LookImagesWidget> {
return null; return null;
} }
/// 可选:根据字节头自动识别文件后缀(如图片、视频) /// 可选:根据字节头自动识别文件后缀(如图片、视频)
String getExtension(Uint8List uint8List) { String getExtension(Uint8List uint8List) {
if (uint8List.length < 4) return "bin"; // 无法识别时返回二进制后缀 if (uint8List.length < 4) return "bin"; // 无法识别时返回二进制后缀
// PNG 头89 50 4E 47 // PNG 头89 50 4E 47
if (uint8List[0] == 0x89 && if (uint8List[0] == 0x89 && uint8List[1] == 0x50 && uint8List[2] == 0x4E && uint8List[3] == 0x47) {
uint8List[1] == 0x50 &&
uint8List[2] == 0x4E &&
uint8List[3] == 0x47) {
return "png"; return "png";
} }
// JPG 头FF D8 FF // JPG 头FF D8 FF
@@ -163,11 +163,12 @@ class _LookImagesWidgetState extends State<LookImagesWidget> {
} }
} }
/// Uint8List 转临时 File /// Uint8List 转临时 File 并且上传到oss并返回访问路径
Future<File?> uint8ListToTempFile(Uint8List uint8List, {String fileName = "temp_file"}) async { Future<String?> uint8ListToTempFile(Uint8List uint8List, {String fileName = "temp_file"}) async {
try { try {
// 1. 获取临时存储目录(跨平台兼容) // 1. 获取临时存储目录(跨平台兼容)
Directory tempDir = await getTemporaryDirectory(); Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path; String tempPath = tempDir.path;
// 2. 拼接文件路径(可自定义后缀,如 .png、.mp4 等) // 2. 拼接文件路径(可自定义后缀,如 .png、.mp4 等)
@@ -175,7 +176,9 @@ class _LookImagesWidgetState extends State<LookImagesWidget> {
// 3. 将 Uint8List 写入文件 // 3. 将 Uint8List 写入文件
await tempFile.writeAsBytes(uint8List); await tempFile.writeAsBytes(uint8List);
print("临时文件路径:${tempFile.path}");
// print("临时文件路径:${tempFile.path}");
String imageUrl = await UploadOss.upload( String imageUrl = await UploadOss.upload(
tempFile.path, tempFile.path,
fileType: getExtension(uint8List), fileType: getExtension(uint8List),
@@ -186,8 +189,8 @@ class _LookImagesWidgetState extends State<LookImagesWidget> {
callback: widget.callback ?? '', callback: widget.callback ?? '',
signature: widget.signature ?? '', signature: widget.signature ?? '',
); );
print("上传后的路径:$imageUrl"); // print("上传后的访问路径:$imageUrl");
return tempFile; return imageUrl;
} catch (e) { } catch (e) {
print("转换临时文件失败:$e"); print("转换临时文件失败:$e");
return null; return null;
@@ -201,7 +204,6 @@ class _LookImagesWidgetState extends State<LookImagesWidget> {
initialPage = 0; initialPage = 0;
currentPage = 0; currentPage = 0;
} else { } else {
// initialPage = 0;
currentPage = widget.currentPage ?? 0; currentPage = widget.currentPage ?? 0;
} }
super.initState(); super.initState();
@@ -238,7 +240,8 @@ class _LookImagesWidgetState extends State<LookImagesWidget> {
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
Uint8List? imageFile = await editImage(url: listData[currentPage]); Uint8List? imageFile = await editImage(url: listData[currentPage]);
uint8ListToTempFile(imageFile??Uint8List(0)); String? url = await uint8ListToTempFile(imageFile ?? Uint8List(0));
widget.onCallBack!(url??'');
}, },
child: Icon(Icons.edit, color: Colors.white))), child: Icon(Icons.edit, color: Colors.white))),
//图片张数指示器 //图片张数指示器