From f2ab06e4bb01fa36e8778e6fd351dfc6880354b7 Mon Sep 17 00:00:00 2001 From: wuxinglong Date: Fri, 14 Nov 2025 13:55:55 +0800 Subject: [PATCH] no message --- lib/upload_image/look_images_widget.dart | 27 +++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/lib/upload_image/look_images_widget.dart b/lib/upload_image/look_images_widget.dart index 641dd65..0a9c4bb 100644 --- a/lib/upload_image/look_images_widget.dart +++ b/lib/upload_image/look_images_widget.dart @@ -13,7 +13,9 @@ class LookImagesTool { static lookImages({ required List listData, int? currentPage, + void Function(String)? onCallBack, String? oSSAccessKeyId, + Function? callBack, String? policy, String? callback, String? signature, @@ -46,6 +48,7 @@ class LookImagesWidget extends StatefulWidget { final String? signature; final String? ossDirectory; final String? ossHost; + final void Function(String)? onCallBack; const LookImagesWidget({ super.key, @@ -57,6 +60,7 @@ class LookImagesWidget extends StatefulWidget { this.signature, this.ossDirectory, this.ossHost, + this.onCallBack, }); @override @@ -129,16 +133,12 @@ class _LookImagesWidgetState extends State { return null; } - /// 可选:根据字节头自动识别文件后缀(如图片、视频) String getExtension(Uint8List uint8List) { if (uint8List.length < 4) return "bin"; // 无法识别时返回二进制后缀 // PNG 头:89 50 4E 47 - if (uint8List[0] == 0x89 && - uint8List[1] == 0x50 && - uint8List[2] == 0x4E && - uint8List[3] == 0x47) { + if (uint8List[0] == 0x89 && uint8List[1] == 0x50 && uint8List[2] == 0x4E && uint8List[3] == 0x47) { return "png"; } // JPG 头:FF D8 FF @@ -163,11 +163,12 @@ class _LookImagesWidgetState extends State { } } - /// Uint8List 转临时 File - Future uint8ListToTempFile(Uint8List uint8List, {String fileName = "temp_file"}) async { + /// Uint8List 转临时 File 并且上传到oss并返回访问路径 + Future uint8ListToTempFile(Uint8List uint8List, {String fileName = "temp_file"}) async { try { // 1. 获取临时存储目录(跨平台兼容) Directory tempDir = await getTemporaryDirectory(); + String tempPath = tempDir.path; // 2. 拼接文件路径(可自定义后缀,如 .png、.mp4 等) @@ -175,7 +176,9 @@ class _LookImagesWidgetState extends State { // 3. 将 Uint8List 写入文件 await tempFile.writeAsBytes(uint8List); - print("临时文件路径:${tempFile.path}"); + + // print("临时文件路径:${tempFile.path}"); + String imageUrl = await UploadOss.upload( tempFile.path, fileType: getExtension(uint8List), @@ -186,8 +189,8 @@ class _LookImagesWidgetState extends State { callback: widget.callback ?? '', signature: widget.signature ?? '', ); - print("上传后的路径:$imageUrl"); - return tempFile; + // print("上传后的访问路径:$imageUrl"); + return imageUrl; } catch (e) { print("转换临时文件失败:$e"); return null; @@ -201,7 +204,6 @@ class _LookImagesWidgetState extends State { initialPage = 0; currentPage = 0; } else { - // initialPage = 0; currentPage = widget.currentPage ?? 0; } super.initState(); @@ -238,7 +240,8 @@ class _LookImagesWidgetState extends State { child: GestureDetector( onTap: () async { 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))), //图片张数指示器