优化新增人物功能

This commit is contained in:
DelLevin-Home
2026-08-08 22:33:32 +08:00
parent d638497525
commit df8335b187
22 changed files with 4196 additions and 11 deletions

View File

@@ -12,6 +12,7 @@ import '../pages/book/book_detail_page.dart';
import '../pages/note/note_detail_page.dart';
import '../pages/game/game_detail_page.dart';
import '../pages/movies/douban_webview_page.dart';
import '../pages/people/person_form_page.dart';
/// 路由生成器
class AppRouter {
@@ -89,6 +90,11 @@ class AppRouter {
}
return SlideUpPageRoute(page: DoubanWebViewPage(url: url));
case '/person-form':
final args = settings.arguments;
final Person? person = args is Person ? args : null;
return SlideUpPageRoute(page: PersonFormPage(person: person));
default:
return _buildUnknownRoute(settings.name);
}

View File

@@ -12,6 +12,7 @@ import 'package:path/path.dart' as p;
/// images/notes/{noteId}/xxxx.jpg - 笔记图片
/// images/games/{gameId}/xxxx.jpg - 游戏封面
/// images/games/{gameId}/screenshots/xxxx.jpg - 游戏截图
/// images/people/{personId}/xxxx.jpg - 人物图片
class ImagePathHelper {
static final ImagePathHelper instance = ImagePathHelper._init();
@@ -130,6 +131,22 @@ class ImagePathHelper {
return p.join(dir, fileName);
}
// ==================== 人物相关路径 ====================
/// 获取人物图片目录
/// 路径: images/people/{personId}/
Future<String> getPersonImagesDir(String personId) async {
final root = await imagesRoot;
return p.join(root, 'people', personId);
}
/// 获取人物图片路径
/// 路径: images/people/{personId}/{fileName}
Future<String> getPersonPhotoPath(String personId, String fileName) async {
final dir = await getPersonImagesDir(personId);
return p.join(dir, fileName);
}
// ==================== 目录操作 ====================
/// 确保目录存在
@@ -173,6 +190,13 @@ class ImagePathHelper {
await _deleteDirectory(dirPath);
}
/// 删除人物图片目录
/// 删除路径: images/people/{personId}/
Future<void> deletePersonImages(String personId) async {
final dirPath = await getPersonImagesDir(personId);
await _deleteDirectory(dirPath);
}
/// 删除目录及其内容
Future<void> _deleteDirectory(String dirPath) async {
try {