From 00e948e580d26ad14b53c5e90d1f669a16d9f7f9 Mon Sep 17 00:00:00 2001 From: DelLevin-Home Date: Thu, 25 Jun 2026 02:11:11 +0800 Subject: [PATCH] 1111 --- README.md | 42 +++++++++++--------- lib/pages/enhanced_search_settings_page.dart | 37 ++++++++++++----- lib/pages/online_search_page.dart | 18 +++++++-- lib/utils/server_config.dart | 1 + 4 files changed, 65 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 1e1fca4..798e354 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,16 @@ http://docmost.iletter.top/share/ropwljpyvn/p/mook-note-lHmPTswdDC ## 应用预览 -| 影视列表 | 书籍列表 | 笔记界面 | -|:---:|:---:|:---:| -| | | | - +| 影视列表 | 书籍列表 | 笔记界面 | +| :------------------------------------------------------------: | :------------------------------------------------------------: | :------------------------------------------------------------: | +| `` | `` | `` | 更多预览图片请到**应用功能详情预览**里面查看 ## 功能特性 ### 影视管理 + - 影视增删改查,支持海报、导演、演员、类型等信息录入 - 影评撰写与管理,支持星级评分 - 影视海报墙浏览(瀑布流布局) @@ -26,6 +26,7 @@ http://docmost.iletter.top/share/ropwljpyvn/p/mook-note-lHmPTswdDC - 影视状态筛选(想看 / 在看 / 已看) ### 书籍管理 + - 书籍增删改查,支持封面、作者、出版社等信息 - 书评撰写与管理 - 书摘 / 摘录记录 @@ -33,11 +34,13 @@ http://docmost.iletter.top/share/ropwljpyvn/p/mook-note-lHmPTswdDC - 书籍状态筛选 ### 笔记管理 + - 笔记增删改查,支持 Markdown 编辑与实时渲染 - 笔记分享卡片 - Markdown 阅读器支持暗色模式与字体大小调节 ### 通用功能 + - 全局搜索(影视 / 书籍 / 笔记) - 标签管理与分类 - 数据统计与可视化图表(月度趋势 / 类型分布) @@ -51,11 +54,11 @@ http://docmost.iletter.top/share/ropwljpyvn/p/mook-note-lHmPTswdDC ## 技术栈 -| 类别 | 技术 | -|------|------| -| 框架 | Flutter 3.5+ | -| 语言 | Dart | -| 状态管理 | Provider | +| 类别 | 技术 | +| ---------- | ----------------- | +| 框架 | Flutter 3.5+ | +| 语言 | Dart | +| 状态管理 | Provider | | 本地数据库 | SQLite(sqflite) | ## 项目结构 @@ -145,18 +148,21 @@ flutter build appbundle --release ## 应用功能详情预览 -| 数据统计 | 侧边栏 | 我的界面 | -|:---:|:---:|:---:| -| | | | +| 数据统计 | 侧边栏 | 我的界面 | +| :-------------------------------------------------------------: | :------------------------------------------------------------: | :-------------------------------------------------------------------: | +| `` | `` | `` | +| 详情界面1 | 详情界面2 | 编辑笔记 | +| :------------------------------------------: | :------------------------------------------: | :------------------------------------------: | +| `` | `` | `` | -| 详情界面1 | 详情界面2 | 编辑笔记 | -|:---:|:---:|:---:| -| | | | +| 分享界面1 | 分享界面2 | 预览笔记 | +| :------------------------------------------: | :------------------------------------------: | :------------------------------------------: | +| `` | `` | `` | -| 分享界面1 | 分享界面2 | 预览笔记 | -|:---:|:---:|:---:| -| | | | +## 数据对接 + +数据已对接6w+影视基础数据,以及300w+书籍基础信息,如需对接接口,或技术交流请联系作者。 ## 开源协议 diff --git a/lib/pages/enhanced_search_settings_page.dart b/lib/pages/enhanced_search_settings_page.dart index a9d91e9..f66f0af 100644 --- a/lib/pages/enhanced_search_settings_page.dart +++ b/lib/pages/enhanced_search_settings_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import '../utils/user_prefs.dart'; import '../utils/server_config.dart'; +import 'legal_page.dart'; /// 增强搜索设置页面 class EnhancedSearchSettingsPage extends StatefulWidget { @@ -392,19 +393,33 @@ class _EnhancedSearchSettingsPageState } Widget _buildSaveButton(ColorScheme colors) { - return GestureDetector( - onTap: _saveAndVerify, - child: Container( - width: double.infinity, - padding: const EdgeInsets.symmetric(vertical: 12), - decoration: BoxDecoration( - color: colors.primary, - borderRadius: BorderRadius.circular(10), + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + GestureDetector( + onTap: _saveAndVerify, + child: Container( + width: double.infinity, + padding: const EdgeInsets.symmetric(vertical: 12), + decoration: BoxDecoration( + color: colors.primary, + borderRadius: BorderRadius.circular(10), + ), + child: Center( + child: Text('保存并验证', style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, color: colors.onPrimary)), + ), + ), ), - child: Center( - child: Text('保存并验证', style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, color: colors.onPrimary)), + const SizedBox(height: 8), + Align( + alignment: Alignment.centerRight, + child: GestureDetector( + onTap: () => Navigator.push(context, MaterialPageRoute( + builder: (_) => const LegalPage(slug: 'token_doc', title: '获取Token'))), + child: Text('点击获取 Token', style: TextStyle(fontSize: 12, color: colors.primary)), + ), ), - ), + ], ); } diff --git a/lib/pages/online_search_page.dart b/lib/pages/online_search_page.dart index d973ec0..2fbf979 100644 --- a/lib/pages/online_search_page.dart +++ b/lib/pages/online_search_page.dart @@ -123,7 +123,7 @@ class _OnlineSearchPageState extends State { final url = '${ServerConfig.vipBaseUrl}/api/movie/list?movieName=${Uri.encodeComponent(keyword)}&token=$token&page=$page'; final resp = - await http.get(Uri.parse(url)).timeout(const Duration(seconds: 10)); + await http.get(Uri.parse(url)).timeout(const Duration(seconds: 20)); if (!mounted) return; if (resp.statusCode == 200) { @@ -156,7 +156,12 @@ class _OnlineSearchPageState extends State { return; } } - } catch (_) {} + } catch (e) { + if (mounted) { + final msg = e.toString().contains('TimeoutException') ? '搜索超时,请稍后重试' : '搜索失败,请检查网络'; + ToastUtil.show(context, msg); + } + } if (mounted) { setState(() { @@ -186,7 +191,7 @@ class _OnlineSearchPageState extends State { final url = '${ServerConfig.vipBaseUrl}/api/book/list?title=${Uri.encodeComponent(keyword)}&token=$token&page=$page'; final resp = - await http.get(Uri.parse(url)).timeout(const Duration(seconds: 10)); + await http.get(Uri.parse(url)).timeout(const Duration(seconds: 20)); if (!mounted) return; if (resp.statusCode == 200) { @@ -219,7 +224,12 @@ class _OnlineSearchPageState extends State { return; } } - } catch (_) {} + } catch (e) { + if (mounted) { + final msg = e.toString().contains('TimeoutException') ? '搜索超时,请稍后重试' : '搜索失败,请检查网络'; + ToastUtil.show(context, msg); + } + } if (mounted) { setState(() { diff --git a/lib/utils/server_config.dart b/lib/utils/server_config.dart index c1dde62..8af8637 100644 --- a/lib/utils/server_config.dart +++ b/lib/utils/server_config.dart @@ -11,6 +11,7 @@ class ServerConfig { static final String apiBase = '$baseUrl/api'; static final String vipBaseUrl = kDebugMode + // ? 'http://vipapi.mooknote.iletter.top' ? 'http://192.168.31.48:8081' : 'http://vipapi.mooknote.iletter.top'; }