no message
This commit is contained in:
@@ -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))),
|
||||||
//图片张数指示器
|
//图片张数指示器
|
||||||
|
|||||||
Reference in New Issue
Block a user