generated from dellevin/template
完善
This commit is contained in:
@@ -82,6 +82,12 @@ class BookDao {
|
||||
);
|
||||
});
|
||||
|
||||
// 仅更新封面偏移量(不触发全量刷新)
|
||||
Future<void> updateCoverOffset(String bookId, double offset) => _wrap('updateCoverOffset', () async {
|
||||
final db = await _dbHelper.database;
|
||||
await db.update('books', {'cover_offset': offset}, where: 'id = ?', whereArgs: [bookId]);
|
||||
});
|
||||
|
||||
// 软删除书籍记录(移入回收站)
|
||||
Future<int> deleteBook(String id) => _wrap('deleteBook', () async {
|
||||
final db = await _dbHelper.database;
|
||||
|
||||
@@ -57,7 +57,7 @@ class DatabaseHelper {
|
||||
|
||||
return await openDatabase(
|
||||
path,
|
||||
version: 15,
|
||||
version: 16,
|
||||
onCreate: _createDB,
|
||||
onUpgrade: _onUpgrade,
|
||||
);
|
||||
@@ -119,8 +119,26 @@ class DatabaseHelper {
|
||||
await _createReaderBooksTable(db);
|
||||
}
|
||||
if (oldVersion < 15) {
|
||||
await db.execute('ALTER TABLE movies ADD COLUMN cover_offset REAL DEFAULT 0');
|
||||
await db.execute('ALTER TABLE books ADD COLUMN cover_offset REAL DEFAULT 0');
|
||||
// 安全添加 cover_offset 列(防止列已存在时报错)
|
||||
final movieCols = await db.rawQuery('PRAGMA table_info(movies)');
|
||||
if (!movieCols.any((col) => col['name'] == 'cover_offset')) {
|
||||
await db.execute('ALTER TABLE movies ADD COLUMN cover_offset REAL DEFAULT 0');
|
||||
}
|
||||
final bookCols = await db.rawQuery('PRAGMA table_info(books)');
|
||||
if (!bookCols.any((col) => col['name'] == 'cover_offset')) {
|
||||
await db.execute('ALTER TABLE books ADD COLUMN cover_offset REAL DEFAULT 0');
|
||||
}
|
||||
}
|
||||
// v16: 确保 cover_offset 列存在(v15 的数据库可能缺少此列)
|
||||
if (oldVersion < 16) {
|
||||
final movieCols = await db.rawQuery('PRAGMA table_info(movies)');
|
||||
if (!movieCols.any((col) => col['name'] == 'cover_offset')) {
|
||||
await db.execute('ALTER TABLE movies ADD COLUMN cover_offset REAL DEFAULT 0');
|
||||
}
|
||||
final bookCols = await db.rawQuery('PRAGMA table_info(books)');
|
||||
if (!bookCols.any((col) => col['name'] == 'cover_offset')) {
|
||||
await db.execute('ALTER TABLE books ADD COLUMN cover_offset REAL DEFAULT 0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -139,6 +139,12 @@ class MovieDao {
|
||||
);
|
||||
});
|
||||
|
||||
// 仅更新封面偏移量(不触发全量刷新)
|
||||
Future<void> updateCoverOffset(String movieId, double offset) => _wrap('updateCoverOffset', () async {
|
||||
final db = await _dbHelper.database;
|
||||
await db.update('movies', {'cover_offset': offset}, where: 'id = ?', whereArgs: [movieId]);
|
||||
});
|
||||
|
||||
// 删除影视记录(软删除)
|
||||
Future<int> deleteMovie(String id) => _wrap('deleteMovie', () async {
|
||||
final db = await _dbHelper.database;
|
||||
|
||||
@@ -61,6 +61,12 @@ class UserPrefs {
|
||||
int get detailPageStyle => prefs.getInt('detailPageStyle') ?? 0;
|
||||
Future<bool> setDetailPageStyle(int value) => prefs.setInt('detailPageStyle', value);
|
||||
|
||||
// ========== 封面位置 ==========
|
||||
|
||||
/// 获取封面偏移量(-1.0 到 1.0,0 = 居中)
|
||||
double getCoverOffset(String itemId) => prefs.getDouble('coverOffset_$itemId') ?? 0.0;
|
||||
Future<bool> setCoverOffset(String itemId, double value) => prefs.setDouble('coverOffset_$itemId', value);
|
||||
|
||||
// ========== 主界面显示设置 ==========
|
||||
|
||||
/// 是否启用底部导航栏滚动隐藏(默认开启)
|
||||
|
||||
Reference in New Issue
Block a user