修复代码格式

This commit is contained in:
2026-04-03 20:56:21 +08:00
parent d0f81bf18e
commit 668199ce3f
6 changed files with 87 additions and 67 deletions

View File

@@ -37,5 +37,4 @@ class AlbumRepository {
final albums = await getAllAlbums();
return albums.where((a) => a.id == id).firstOrNull;
}
}

View File

@@ -18,12 +18,13 @@ class PhotoRepository {
Directory? albumDir;
try {
albumDir = await dir
.list()
.where((f) => f is Directory)
.where((d) => p.basename(d.path).hashCode == id)
.first
as Directory;
albumDir =
await dir
.list()
.where((f) => f is Directory)
.where((d) => p.basename(d.path).hashCode == id)
.first
as Directory;
} on StateError {
return [];
}
@@ -159,9 +160,9 @@ class PhotoRepository {
}
final marker = data[offset + 1];
// SOF 标记 (Start Of Frame)
if (marker >= 0xC0 && marker <= 0xC3 ||
if (marker >= 0xC0 && marker <= 0xC3 ||
marker >= 0xC5 && marker <= 0xC7 ||
marker >= 0xC9 && marker <= 0xCB ||
marker >= 0xCD && marker <= 0xCF) {
@@ -191,25 +192,33 @@ class PhotoRepository {
/// 解析 PNG 图片尺寸
(int, int)? _parsePngDimensions(Uint8List data) {
if (data.length < 24 ||
data[0] != 0x89 || data[1] != 0x50 ||
data[2] != 0x4E || data[3] != 0x47 ||
data[4] != 0x0D || data[5] != 0x0A ||
data[6] != 0x1A || data[7] != 0x0A) {
if (data.length < 24 ||
data[0] != 0x89 ||
data[1] != 0x50 ||
data[2] != 0x4E ||
data[3] != 0x47 ||
data[4] != 0x0D ||
data[5] != 0x0A ||
data[6] != 0x1A ||
data[7] != 0x0A) {
return null; // 不是有效的 PNG
}
// IHDR chunk 在第 16-23 字节
final width = (data[16] << 24) | (data[17] << 16) | (data[18] << 8) | data[19];
final height = (data[20] << 24) | (data[21] << 16) | (data[22] << 8) | data[23];
final width =
(data[16] << 24) | (data[17] << 16) | (data[18] << 8) | data[19];
final height =
(data[20] << 24) | (data[21] << 16) | (data[22] << 8) | data[23];
return (width, height);
}
/// 解析 GIF 图片尺寸
(int, int)? _parseGifDimensions(Uint8List data) {
if (data.length < 10 ||
data[0] != 0x47 || data[1] != 0x49 ||
data[2] != 0x46 || data[3] != 0x38) {
if (data.length < 10 ||
data[0] != 0x47 ||
data[1] != 0x49 ||
data[2] != 0x46 ||
data[3] != 0x38) {
return null; // 不是有效的 GIF
}
@@ -224,23 +233,29 @@ class PhotoRepository {
return null; // 不是有效的 BMP
}
final width = data[18] | (data[19] << 8) | (data[20] << 16) | (data[21] << 24);
final height = data[22] | (data[23] << 8) | (data[24] << 16) | (data[25] << 24);
final width =
data[18] | (data[19] << 8) | (data[20] << 16) | (data[21] << 24);
final height =
data[22] | (data[23] << 8) | (data[24] << 16) | (data[25] << 24);
return (width, height.abs()); // BMP 高度可能是负数
}
/// 解析 WebP 图片尺寸
(int, int)? _parseWebpDimensions(Uint8List data) {
if (data.length < 30 ||
data[0] != 0x52 || data[1] != 0x49 ||
data[2] != 0x46 || data[3] != 0x46 ||
data[8] != 0x57 || data[9] != 0x45 ||
data[10] != 0x42 || data[11] != 0x50) {
if (data.length < 30 ||
data[0] != 0x52 ||
data[1] != 0x49 ||
data[2] != 0x46 ||
data[3] != 0x46 ||
data[8] != 0x57 ||
data[9] != 0x45 ||
data[10] != 0x42 ||
data[11] != 0x50) {
return null; // 不是有效的 WebP
}
final type = String.fromCharCodes(data.sublist(12, 16));
if (type == 'VP8 ') {
// Lossy WebP
if (data.length < 30) return null;
@@ -254,7 +269,8 @@ class PhotoRepository {
if (data.length < 29) return null;
if (data[21] != 0x2F) return null;
final width = 1 + ((data[22] | (data[23] << 8)) & 0x3FFF);
final height = 1 + (((data[23] >> 6) | (data[24] << 2) | (data[25] << 10)) & 0x3FFF);
final height =
1 + (((data[23] >> 6) | (data[24] << 2) | (data[25] << 10)) & 0x3FFF);
return (width, height);
} else if (type == 'VP8X') {
// Extended WebP
@@ -263,7 +279,7 @@ class PhotoRepository {
final height = 1 + (data[27] | (data[28] << 8) | (data[29] << 16));
return (width, height);
}
return null;
}