From ede0b10b1936e1f671da71db905fdbd87ab35371 Mon Sep 17 00:00:00 2001 From: DelLevin-Home Date: Sun, 28 Jun 2026 23:55:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=BA=95=E9=83=A8=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E6=A0=8F=E5=92=8C=E6=BB=91=E5=8A=A8=E7=9A=84=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 ++++++++++++++-------------- lib/pages/book/book_tab_page.dart | 10 ++++++-- lib/pages/movies/movie_tab_page.dart | 13 ++++++++-- lib/pages/note/note_tab_page.dart | 9 +++++-- lib/utils/user_prefs.dart | 2 +- pubspec.yaml | 2 +- 6 files changed, 46 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 15aa5d7..02f081b 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ http://docmost.iletter.top/share/ropwljpyvn/p/mook-note-lHmPTswdDC ## 应用预览 -| 影视列表 | 书籍列表 | 笔记界面 | -| :--------------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | +| 影视列表 | 书籍列表 | 笔记界面 | +| :---------------------------------------: | :---------------------------------------: | :---------------------------------------: | | ![影视列表](image/README/1782484732881.png) | ![书籍列表](image/README/1782484753882.png) | ![笔记界面](image/README/1782484769014.png) | 更多预览图片请到**应用功能详情预览**里面查看 @@ -93,17 +93,17 @@ http://docmost.iletter.top/share/ropwljpyvn/p/mook-note-lHmPTswdDC ## 技术栈 -| 类别 | 技术 | -| ---------- | ------------------------------- | -| 框架 | Flutter 3.5+ | -| 语言 | Dart | -| 状态管理 | Provider | -| 本地数据库 | SQLite(sqflite) | -| 图表 | fl_chart | -| 富文本 | flutter_quill(Note Plus) | -| Markdown | flutter_markdown_plus | +| 类别 | 技术 | +| ---------- | -------------------------------------- | +| 框架 | Flutter 3.5+ | +| 语言 | Dart | +| 状态管理 | Provider | +| 本地数据库 | SQLite(sqflite) | +| 图表 | fl_chart | +| 富文本 | flutter_quill(Note Plus) | +| Markdown | flutter_markdown_plus | | WebView | webview_flutter / flutter_inappwebview | -| 后端 | Python Flask(服务端 API 与管理后台) | +| 后端 | Python Flask(服务端 API 与管理后台) | ## 项目结构 @@ -219,16 +219,16 @@ flutter build appbundle --release ## 应用功能详情预览 -| 数据统计 | 侧边栏 | 我的界面 | -| :--------------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | +| 数据统计 | 侧边栏 | 我的界面 | +| :---------------------------------------: | :-------------------------------------: | :---------------------------------------: | | ![数据统计](image/README/1782484806542.png) | ![侧边栏](image/README/1782484815573.png) | ![我的界面](image/README/1782484824223.png) | -| 详情界面1 | 详情界面2 | 编辑笔记 | -| :--------------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | +| 详情界面1 | 详情界面2 | 编辑笔记 | +| :----------------------------------------: | :----------------------------------------: | :---------------------------------------: | | ![详情界面1](image/README/1782484832641.png) | ![详情界面2](image/README/1782484836809.png) | ![编辑笔记](image/README/1782484844066.png) | -| 分享界面1 | 分享界面2 | 预览笔记 | -| :--------------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | +| 分享界面1 | 分享界面2 | 预览笔记 | +| :----------------------------------------: | :----------------------------------------: | :---------------------------------------: | | ![分享界面1](image/README/1782484860728.png) | ![分享界面2](image/README/1782484855884.png) | ![预览笔记](image/README/1782484849659.png) | ## 影视书籍资源数据对接 diff --git a/lib/pages/book/book_tab_page.dart b/lib/pages/book/book_tab_page.dart index d6ee007..3445702 100644 --- a/lib/pages/book/book_tab_page.dart +++ b/lib/pages/book/book_tab_page.dart @@ -28,6 +28,7 @@ class _BookTabPageState extends State { late ScrollController _scrollController; AppProvider? _provider; int _lastScrollSignal = 0; + int _prevBookCount = -1; static const _statusMap = {0: 'read', 1: 'reading', 2: 'want_to_read'}; @@ -63,8 +64,13 @@ class _BookTabPageState extends State { } } - // 数据变化时刷新列表(排序/评分/新增等) - _loadFirst(); + // 仅在数据实际变化时刷新列表,避免底部导航栏显隐等UI变化误触发重载 + final statusChanged = provider.bookStatusIndex != _lastStatusIndex; + final countChanged = provider.books.length != _prevBookCount; + if (statusChanged || countChanged) { + _prevBookCount = provider.books.length; + _loadFirst(); + } } void _onScroll() { diff --git a/lib/pages/movies/movie_tab_page.dart b/lib/pages/movies/movie_tab_page.dart index c18ba8c..973f6be 100644 --- a/lib/pages/movies/movie_tab_page.dart +++ b/lib/pages/movies/movie_tab_page.dart @@ -27,6 +27,8 @@ class _MovieTabPageState extends State { late ScrollController _scrollController; AppProvider? _provider; int _lastScrollSignal = 0; + int _prevMovieCount = -1; + int _prevLayoutStyle = -1; static const _statusMap = {0: 'watched', 1: 'watching', 2: 'want_to_watch'}; @@ -61,8 +63,15 @@ class _MovieTabPageState extends State { } } - // 数据变化时刷新列表(排序/评分/新增等) - _loadFirst(); + // 仅在数据或布局实际变化时刷新列表,避免底部导航栏显隐等UI变化误触发重载 + final statusChanged = provider.movieStatusIndex != _lastStatusIndex; + final layoutChanged = provider.movieLayoutStyle != _prevLayoutStyle; + final countChanged = provider.movies.length != _prevMovieCount; + if (statusChanged || layoutChanged || countChanged) { + _prevLayoutStyle = provider.movieLayoutStyle; + _prevMovieCount = provider.movies.length; + _loadFirst(); + } } void _onScroll() { diff --git a/lib/pages/note/note_tab_page.dart b/lib/pages/note/note_tab_page.dart index b505cad..e66289d 100644 --- a/lib/pages/note/note_tab_page.dart +++ b/lib/pages/note/note_tab_page.dart @@ -25,6 +25,7 @@ class _NoteTabPageState extends State { int _layoutStyle = 0; bool _initialized = false; int _lastScrollSignal = 0; + int _prevNoteCount = -1; @override void initState() { @@ -57,8 +58,12 @@ class _NoteTabPageState extends State { } } - // 数据变化时刷新列表(排序/评分/新增等) - _loadFirst(); + // 仅在数据实际变化时刷新列表,避免底部导航栏显隐等UI变化误触发重载 + final countChanged = provider.notes.length != _prevNoteCount; + if (countChanged) { + _prevNoteCount = provider.notes.length; + _loadFirst(); + } } void _onScroll() { diff --git a/lib/utils/user_prefs.dart b/lib/utils/user_prefs.dart index 6e96d35..efdb4d7 100644 --- a/lib/utils/user_prefs.dart +++ b/lib/utils/user_prefs.dart @@ -135,7 +135,7 @@ class UserPrefs { bool get showSidebarTags => prefs.getBool('showSidebarTags') ?? true; Future setShowSidebarTags(bool value) => prefs.setBool('showSidebarTags', value); - bool get showSidebarMdReader => prefs.getBool('showSidebarMdReader') ?? true; + bool get showSidebarMdReader => prefs.getBool('showSidebarMdReader') ?? false; Future setShowSidebarMdReader(bool value) => prefs.setBool('showSidebarMdReader', value); bool get showSidebarEpub => prefs.getBool('showSidebarEpub') ?? true; diff --git a/pubspec.yaml b/pubspec.yaml index d688c9a..80badee 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: mooknote description: "app for tracking movies, books, and notes" publish_to: 'none' -version: 0.2.0 +version: 0.2.1 environment: sdk: ^3.5.0