Feat: Image favorites (#126)

* feat: 增加图片收藏

* feat: 主体图片收藏页面实现

* feat: 点击打开大图浏览

* feat: 数据结构变更

* feat: 基本完成

* feat: 翻译与bug修复

* feat: 实机测试和问题修复

* feat: jm导入, pica历史记录nhentai有问题, 一键反转

* fix: 大小写不一致, 一个htManga, 一个htmanga

* feat: 拉取收藏优化

* feat: 改成以ep为准

* feat: 兜底一些可能报错场景

* chore: 没有用到

* feat: 尽量保证和网络收藏顺序一致

* feat: 支持显示热点tag

* feat: 支持双击收藏, 不过此时禁止放大图片

* fix: 自动塞封面逻辑完善, 切换快速收藏图片立刻生效

* Refactor

* fix updateValue

* feat: 双击功能提示

* fix: 被确定取消收藏的才删除

* Refactor ImageFavoritesPage

* translate author

* feat: 功能提示改到dialog中

* fix text editing

* fix text editing

* feat: 功能提示放到邮件或长按菜单中

* fix: 修复tag过滤不生效问题

* Improve image loading

* The default value of quickCollectImage should be false.

* Refactor DragListener

* Refactor ImageFavoriteItem & ImageFavoritePhotoView

* Refactor

* Fix `ImageFavoriteManager.has`

* Fix UI

* Improve UI

---------

Co-authored-by: nyne <me@nyne.dev>
This commit is contained in:
luckyray
2025-01-15 16:07:08 +08:00
committed by GitHub
parent 213c225e1e
commit d874920c88
42 changed files with 3054 additions and 226 deletions

View File

@@ -5,12 +5,18 @@ class ReaderWithLoading extends StatefulWidget {
super.key,
required this.id,
required this.sourceKey,
this.initialEp,
this.initialPage,
});
final String id;
final String sourceKey;
final int? initialEp;
final int? initialPage;
@override
State<ReaderWithLoading> createState() => _ReaderWithLoadingState();
}
@@ -25,8 +31,10 @@ class _ReaderWithLoadingState
name: data.name,
chapters: data.chapters,
history: data.history,
initialChapter: data.history.ep,
initialPage: data.history.page,
initialChapter: widget.initialEp ?? data.history.ep,
initialPage: widget.initialPage ?? data.history.page,
author: data.author,
tags: data.tags,
);
}
@@ -57,6 +65,8 @@ class _ReaderWithLoadingState
ep: 0,
page: 0,
),
author: localComic.subtitle,
tags: localComic.tags,
),
);
} else {
@@ -76,6 +86,8 @@ class _ReaderWithLoadingState
ep: 0,
page: 0,
),
author: comic.data.findAuthor() ?? "",
tags: comic.data.plainTags,
),
);
}
@@ -93,11 +105,17 @@ class ReaderProps {
final History history;
final String author;
final List<String> tags;
const ReaderProps({
required this.type,
required this.cid,
required this.name,
required this.chapters,
required this.history,
required this.author,
required this.tags,
});
}