水印相机前端

This commit is contained in:
2026-09-28 09:59:43 +08:00
parent 187a7e0911
commit c5b3d81d07
19 changed files with 2761 additions and 3 deletions
+8
View File
@@ -4,6 +4,7 @@ import '../../pages/bill/bill_home_page.dart';
import '../../pages/bill/widgets/bill_module_summary.dart';
import '../../pages/note/note_list_page.dart';
import '../../pages/note/widgets/note_module_summary.dart';
import '../../pages/watermark/watermark_camera_page.dart';
/// 一个功能模块要对外暴露的东西:它是谁、怎么打开自己。
///
@@ -65,4 +66,11 @@ final List<AppModule> appModules = [
open: (_) => const NoteListPage(),
summary: (_) => const NoteModuleSummary(),
),
AppModule(
id: 'watermark',
name: '水印相机',
blurb: '拍照自动加时间地点水印',
icon: 'camera',
open: (_) => const WatermarkCameraPage(),
),
];
+20
View File
@@ -70,4 +70,24 @@ class LocalStorage {
if (username == null || password == null) return null;
return (username: username, password: password);
}
// ---- 水印设置 ----
// 存的是 WatermarkSettings.toJson() 的结果。读取失败/没存过都返回 null,
// 由调用方回落到默认设置(见 models/watermark.dart 的 WatermarkSettings.defaults)。
static const _keyWatermarkSettings = 'watermark_settings';
Future<void> saveWatermarkSettings(Map<String, dynamic> json) async {
final prefs = await _getPrefs();
await prefs.setString(_keyWatermarkSettings, jsonEncode(json));
}
Map<String, dynamic>? getWatermarkSettings() {
final raw = _prefs?.getString(_keyWatermarkSettings);
if (raw == null) return null;
try {
return jsonDecode(raw) as Map<String, dynamic>;
} catch (_) {
return null;
}
}
}