新增文件传输助手功能,包含设备发现、配对、传输等核心模块。主要变更包括: 1. 新增局域网、蓝牙、NFC等多种设备发现方式 2. 实现基于WebRTC、TCP、USB等多种传输协议 3. 添加相关权限管理及状态监控 4. 完善UI界面及交互流程 5. 更新依赖库及版本号至4.19.0 同时优化部分现有功能: 1. 聊天会话增加隐藏功能 2. 完善本地通知权限处理 3. 修复部分已知问题
40 KiB
Changelog
所有重要变更均记录于此文件。格式基于 Keep a Changelog。
[4.26.0] - 2026-05-09
✨ 新功能 — 文件传输助手
-
文件传输助手核心架构 — 多文件:
- 枚举
transfer_enums.dart: 配对方式(PairingMethod)/传输方式(TransportType)/任务状态(TransferTaskStatus)/设备类型(DeviceType)/传输方向(TransferDirection)/USB版本(UsbVersion) - 模型
transfer_device.dart: TransferDevice 设备模型,支持fromJson/toJson/copyWith/fromAnnounce - 模型
transfer_task.dart: TransferTask 传输任务模型,含进度/速度/状态/校验逻辑 - 模型
transfer_message.dart: TransferMessage 消息模型 + PairingInfo 配对信息
- 枚举
-
数据库层 —
transfer_tables.dart+transfer_database.dart:- Drift表: TransferDevices/TransferRecords/PairingRecords/TransferMessages
- 完整CRUD: 设备/记录/配对/消息的增删改查
- 进度更新/状态更新/旧记录清理
-
传输协议服务 — 多文件:
localsend_service.dart: LocalSend Protocol v2.1实现,shelf HTTP服务器+UDP多播发现+dio客户端tcp_socket_service.dart: TCP直连大文件传输(>100MB)webrtc_service.dart: WebRTC P2P传输,flutter_webrtc DataChannel双通道(文件+消息)usb_transport_service.dart: USB有线传输transport_router.dart: 智能路由选择(USB>LAN>TCP>WebRTC>热点>蓝牙>NFC)
-
设备发现服务 — 多文件:
lan_discovery_service.dart: 局域网UDP多播发现bluetooth_pairing_service.dart: BLE蓝牙配对(flutter_blue_plus)nfc_pairing_service.dart: NFC碰一碰配对(nfc_manager)qr_pairing_service.dart: QR码配对usb_discovery_service.dart: USB设备发现hotspot_service.dart: WiFi热点管理
-
信令服务 —
signaling_service.dart:- WebSocket信令服务器连接(web_socket_channel)
- 心跳保活/自动重连/设备发现/SDP交换/ICE候选交换
-
配对服务 —
pairing_service.dart:- 统一配对入口,支持7种配对方式
- 设备合并/配对记录持久化
-
缓存管理 —
cache_manager_service.dart:- 缩略图/临时文件/传输记录/接收文件分类管理
- 缓存大小统计/分类清理/旧记录自动清理
-
Provider状态管理 — 多文件:
transfer_provider.dart: TransferNotifier+TransferState,传输任务/消息/配对/进度管理device_discovery_provider.dart: DeviceDiscoveryNotifier+DeviceDiscoveryState,设备发现/平台能力检测providers.dart: 统一Provider定义(transferProvider/deviceDiscoveryProvider/衍生Provider)
-
UI页面 — 多文件:
file_transfer_page.dart: 主页面(发现/传输/记录三Tab),含调试面板transfer_chat_page.dart: 传输聊天页面(消息气泡/文件传输/进度显示)device_pairing_page.dart: 配对页面(IP/QR/蓝牙/其他四Tab)transfer_task_card.dart: 传输任务卡片组件device_card.dart: 设备卡片组件
-
路由集成 —
app_router.dart:- 新增 /file-transfer /transfer-chat /device-pairing 路由
- 灵感页面会话列表新增文件传输助手条目
-
依赖更新 —
pubspec.yaml:- shelf/shelf_router: HTTP服务器
- flutter_webrtc: WebRTC P2P
- web_socket_channel: 信令WebSocket
- flutter_blue_plus: 蓝牙BLE
- nfc_manager: NFC
- network_info_plus: 网络信息
- mime: MIME类型检测
- mobile_scanner: QR扫码
[4.25.0] - 2026-05-09
✨ 新功能 — 隐藏会话 + 动态主题
-
隐藏会话功能 — 多文件:
- 数据库
app_database.dart: 新增isHidden字段,schemaVersion 10→11,添加迁移 - 模型
chat_session.dart: ChatSession 新增isHidden字段及copyWith支持 - Provider
chat_session_provider.dart: 新增hiddenSessionsgetter、toggleHidden方法,pinnedSessions/unpinnedSessions自动过滤隐藏会话 - Service
chat_conversation_service.dart: 新增toggleHidden方法 - 右滑操作
session_row.dart: 新增「隐藏」按钮(👁️🗨️/👁️ 切换) - 长按菜单
session_popup_menu.dart: 新增「隐藏」和「⚙️ 隐藏设置」选项 - 灵感页面
inspiration_page.dart: 传递onHide/onHiddenSettings回调
- 数据库
-
隐藏会话管理页面 —
hidden_sessions_page.dart:- 新增 iOS 风格管理页面,展示所有隐藏的会话
- 支持右滑「取消隐藏」或点击取消隐藏
- 空状态提示(👁️🗨️ 图标 + 文案)
- 路由
app_router.dart: 新增/hidden-sessions路由
-
会话流动态主题 —
chat_flow_page.dart+chat_settings_page.dart:- 会话流页面读取
settingsJson中的accentColor配置 _buildDynamicTheme方法将会话级强调色覆盖全局主题- 聊天设置页面新增「🎨 主题色」选项,提供 8 种预设色
- 当前选中色显示 ✓ 标记,支持恢复默认
- 会话流页面读取
[4.24.0] - 2026-05-09
✨ 功能优化 — 聊天交互体验全面提升
-
修复媒体气泡区域无法滑动 —
chat_bubble.dart:- 根因:GestureDetector 的 onLongPress 与 ListView 滚动手势冲突
- 将 ChatBubble 从 StatelessWidget 改为 StatefulWidget
- 替换 GestureDetector 为 Listener + Timer 实现长按检测
- 移动超过 3px 时自动取消长按计时器,确保滑动不被拦截
-
输入法不自动弹出 —
chat_flow_page.dart:- 在
initState的addPostFrameCallback中同时调用FocusScope.of(context).unfocus()和_focusNode.unfocus() - 确保页面切换时键盘不会自动弹出,仅用户主动点击输入框时才弹出
- 在
-
点击视频支持播放 —
chat_video_bubble.dart:- 添加
video_player依赖(pubspec.yaml) - 新增
_VideoPlayerPage全屏播放页面 - 支持本地文件和网络视频播放
- 点击暂停/播放,带播放按钮覆盖层和进度条
- 支持横竖屏切换,退出时恢复竖屏
- 错误处理:视频无法播放时显示友好提示
- 添加
-
点击空白区域收起键盘 —
chat_flow_page.dart:- 在 SafeArea 外层添加 GestureDetector,
onTap调用FocusScope.of(context).unfocus() - 使用
HitTestBehavior.translucent确保空白区域也能响应点击
- 在 SafeArea 外层添加 GestureDetector,
-
底部分类选择状态 + 发送后气泡显示分类 —
chat_flow_page.dart:- 新增
_selectedQuickCategory状态变量 - 点击分类标签切换选中/取消选中,不再直接发送
- 选中时显示主题色背景 + 边框 + 加粗文字,使用
AnimatedContainer过渡动画 - 发送消息时自动带上选中的分类
- 气泡下方显示分类小字(已在 v4.23.0 实现)
- 新增
-
消息发送声音 + iOS 风格提示 —
chat_flow_page.dart:- 发送消息时播放
assets/sounds/send.mp3音效(备选系统点击音) - 新增
_SendToastWidget:毛玻璃风格浮动提示 - 提示内容:无分类时显示 "✈️ 已发送",有分类时显示 "🔥 已发送至 hot" 等
- 滑入+淡入动画,1.4 秒后自动滑出消失
- 使用
OverlayEntry实现,不影响页面布局
- 发送消息时播放
[4.23.0] - 2026-05-09
✨ 功能优化 — 会话流交互体验提升
-
去掉发送消息后自动回复 —
chat_provider.dart:- 移除
sendMessage()末尾的_generateAIResponse(text.trim())调用 - 删除
_generateAIResponse方法(含关键词匹配+延迟回复逻辑) - 用户发送消息后不再自动生成AI回复
- 移除
-
图片视频在气泡中显示预览 —
chat_bubble.dart+chat_flow_page.dart:- 修复
_buildSingleAttachment中Image.asset错误使用,改为FutureBuilder+Image.file+ChatFileService.getAbsolutePath() - 修复待发送附件预览
_buildPendingAttachmentItem中Image.asset错误,新增_buildPendingImagePreview方法 - 添加
dart:io和ChatFileServiceimport
- 修复
-
分类标签在气泡下方单独显示 —
chat_bubble.dart:- 从
_buildMetaInfo中移除分类显示(之前混在时间/IP等元信息中) - 新增
_buildCategoryLabel方法,在气泡下方独立显示分类小字标签 - 标签样式:带半透明背景小圆角容器 + emoji + 分类名,10px 小字
- 用户气泡和AI气泡均支持
- 从
-
输入法不自动弹出 —
chat_flow_page.dart:- 在
initState的addPostFrameCallback中添加_focusNode.unfocus(),确保页面加载后键盘不弹出 - 仅在用户主动点击输入框时才弹出键盘
- 在
-
聊天背景图显示 —
chat_flow_page.dart+chat_settings_page.dart:- 修复
_setBackground方法:选择图片后调用updateBgImage保存路径到数据库;恢复默认时传null清除 chat_flow_page.dart的build方法中读取conv.bgImagePath- 使用
Stack布局:底层显示背景图(Positioned.fill+Image.file),上层显示聊天内容 - 背景图不遮挡气泡消息
- 修复
-
弹性滚动效果 —
chat_flow_page.dart:- 消息列表
ListView.builder添加physics: BouncingScrollPhysics() - 上下滑动到顶部/底部时有 iOS 风格弹性回弹效果
- 消息列表
[4.22.1] - 2026-05-09
🐛 Bug修复 — 灵感页面会话流卡死问题
-
富文本编辑器空指针崩溃修复 —
default_styles.dartL482:baseStyle.color!.withValues(alpha: 0.6)改为(baseStyle.color ?? Colors.grey).withValues(alpha: 0.6)- 根因:
DefaultTextStyle.of(context).style.color在 BottomSheet 上下文中可能为 null - 同时补全
RichTextEditorSheet的customStyles(quote/code/lists/link/placeHolder),避免回退到默认样式
-
聊天设置页面卡死修复 —
chat_settings_page.dart:_showToast方法:添加dismissed标记跟踪 dialog 状态,防止用户手动关闭后Future.delayed再次 pop 错误路由- 替换
ListTile(Material组件)为_buildCupertinoListTile(Cupertino兼容),修复在showCupertinoModalPopup中缺少Material祖先导致的断言错误
-
附件路径 PathNotFoundException 修复 — 4个气泡组件:
- 根因:
ChatFileService.saveImage()返回相对路径(如chat_attachments/default/xxx.jpg),但气泡组件直接用File(path)读取,缺少应用文档目录前缀 ChatImageBubble:改为StatefulWidget,initState 中调用ChatFileService.getAbsolutePath()转换路径ChatFileBubble:_openFile中对非绝对路径调用getAbsolutePath()ChatVideoBubble:_resolvePaths()中统一转换视频路径和缩略图路径ChatAudioBubble:_togglePlay中对非绝对路径调用getAbsolutePath()
- 根因:
-
图片/视频发送后不显示修复 —
chat_provider.dart+chat_flow_page.dart:- 根因1:
sendPendingAttachments()完成后未通知ChatNotifier刷新消息列表,新消息不出现 - 根因2:
sendImageMessage/sendVideoMessage/sendAudio/sendFileMessage中ChatMessage.fromDrift(record)不带附件,导致message.attachments为空 - 修复:
_sendAll()中附件发送后调用chatNotifier.reloadMessages();各 send 方法增加附件加载 - 新增
ChatNotifier.reloadMessages()轻量刷新方法
- 根因1:
-
子分类无法点击"全部"修复 —
chat_provider.dart:- 根因:
ChatState.copyWith中selectedCategory: selectedCategory ?? this.selectedCategory,当传入null时??运算符使用旧值,导致无法重置为null - 修复:使用
_unsetsentinel 值区分"未传参"和"传了 null",selectCategory(null)现在能正确重置分类
- 根因:
[4.22.0] - 2026-05-09
✨ 新功能 — 聊天多媒体+视觉增强+交互增强 (Phase 7~8)
-
数据库Schema升级 (v9→v10) —
chat_msg_records新增4字段:reply_to_idTEXT — 回复消息IDrich_contentTEXT — 富文本Delta JSONip_textTEXT — IP归属地简短文本ip_detail_jsonTEXT — IP详情JSON
-
ChatMessage模型扩展 — 新增消息类型+字段:
- 🎵
audio录音消息 / 🎬video视频消息 / ✏️richText富文本消息 replyToId/richContent/ipText/ipDetailJson字段hasIpInfo/isRichText/hasReplyTo便捷getter
- 🎵
-
ChatMessageService扩展 — 新增4个发送方法:
sendVideo()/sendAudio()/sendRichText()/updateIpInfo()
-
ChatAudioService录音播放服务 — 完整录音+播放:
- 🎙️
startRecording()/stopRecording()— AAC格式录音 - ▶️
play()/stopPlayback()— 录音播放+位置/时长监听 - ⏱️
formatDuration()— 时长格式化
- 🎙️
-
IpQueryService扩展 — 新增格式化字段:
ipTextgetter — 简短归属地文本ipDetailJsongetter — 完整IP详情JSON
-
8宫格附件面板 (AttachmentGridSheet) — 替换ActionSheet:
- 🖼️ 相册 / 📷 拍照 / 🎬 视频 / 🎙️ 录音
- 📄 文件 / 📍 位置 / 🔗 链接 / ✏️ 富文本
- 渐变图标背景 + 动态主题适配
-
录音Sheet (RecordAudioSheet) — 录音界面:
- 🎙️ 实时波形可视化 + 时长计时
- ⏹️ 停止/发送 + 取消按钮
- 自动保存到沙箱
-
多媒体气泡组件 — 4个专用子组件:
- 🖼️
ChatImageBubble— 缩略图+分辨率角标+全屏预览(photo_view) - 🎬
ChatVideoBubble— 缩略图+播放按钮+时长+分辨率 - 🎙️
ChatAudioBubble— 播放按钮+波形可视化+时长 - 📄
ChatFileBubble— 文件图标+文件名+大小+类型
- 🖼️
-
ChatBubble重构 — 子组件分发+视觉增强:
- 🫧 毛玻璃效果 (BackdropFilter blur 20px)
- 🎯 3D倾斜 (flutter_tilt ±3°)
- 💫 光晕阴影 (双层box-shadow)
- 📍 IP小字显示 (message.ipText)
- 🔄 子组件分发 (isImage→ChatImageBubble, isAudio→ChatAudioBubble...)
-
IP详情弹窗 (IpDetailSheet) — 毛玻璃弹窗:
- 📍 IP地址 / 省份 / 城市 / 完整地址
- 毛玻璃背景 + 动态主题适配
-
新建对话 — 导航栏入口+弹窗:
- ✏️ 导航栏新建按钮
- Emoji选择器 + 名称输入
- 创建后自动跳转到新对话
-
Provider扩展:
ChatAttachmentProvider.pickVideo()— 视频选择ChatProvider.sendAudio()/sendVideoMessage()— 录音/视频消息发送
📁 新增文件
lib/features/inspiration/presentation/widgets/attachment_grid_sheet.dart— 8宫格附件面板lib/features/inspiration/presentation/widgets/record_audio_sheet.dart— 录音Sheetlib/features/inspiration/presentation/widgets/chat_image_bubble.dart— 图片气泡lib/features/inspiration/presentation/widgets/chat_video_bubble.dart— 视频气泡lib/features/inspiration/presentation/widgets/chat_audio_bubble.dart— 录音气泡lib/features/inspiration/presentation/widgets/chat_file_bubble.dart— 文件气泡lib/features/inspiration/presentation/widgets/ip_detail_sheet.dart— IP详情弹窗
📁 修改文件
lib/core/storage/database/app_database.dart— Schema 9→10, 新增4字段lib/features/inspiration/models/chat_message.dart— 新增3枚举+4字段+4getterlib/features/inspiration/services/chat_message_service.dart— 新增4方法lib/features/inspiration/services/ip_query_service.dart— 新增ipText/ipDetailJsonlib/features/inspiration/presentation/widgets/chat_bubble.dart— 重构+毛玻璃+3D倾斜+IP小字lib/features/inspiration/presentation/chat_flow_page.dart— 8宫格面板+新建对话+录音集成lib/features/inspiration/providers/chat_provider.dart— 新增sendAudio/sendVideoMessagelib/features/inspiration/providers/chat_attachment_provider.dart— 新增pickVideo
[4.21.0] - 2026-05-08
✨ 新功能 — 聊天会话流 Provider层 + UI层 + 缓存管理集成 + 动画效果
-
Provider层 (Phase 3) — 6个Provider完成:
- 💬
ChatConversationProvider— 会话CRUD+置顶+搜索+加载状态 - 📝
ChatProvider重构 — Hive→Drift读写,消息CRUD+已阅+软删除+回收站 - 📎
ChatAttachmentProvider— 附件选择/预览/发送/沙箱存储/缩略图 - 🔄
ChatSessionProvider迁移 — 硬编码会话→Drift读取 - 🔄
ChatMigrationService— Hive→Drift批量迁移+旧键清除+迁移标记 - 🧪 编译验证通过,无error/warning
- 💬
-
UI层 (Phase 4) — 完整聊天界面+设置页+动画效果:
- 🎨
ChatFlowPage重构 — 多会话切换+草稿保存+附件预览+分类栏+发送按钮双色 - 💬
ChatBubble重构 — 图片/文件/音频/视频渲染+元信息+已阅+编辑+长按菜单 - ⚙️
ChatSettingsPage— 🎨外观 📦数据 📝备注 ☁️同步 🏷️分类 🗑️回收站 - 📎
ChatAttachmentPreview— 输入栏附件预览条 - ✨ 动画效果增强 — 消息fadeIn+slideY, 空状态呼吸动画, 发送按钮scale, 气泡shimmer
- 🛤️ 路由配置 — chatSettings路由+iOS滑入转场
- 🎨
-
缓存管理集成 (Phase 5) — 聊天数据统计+清理:
- 📊
CacheStats扩展6个聊天字段(会话数/消息数/附件数/附件大小/回收站数/回收站大小) - 🧹
CacheService新增3个清理方法(cleanChatTrash/cleanChatThumbnails/clearAllChatData) - 🖥️ 缓存管理页面新增3行聊天统计+4个清理按钮(含二次确认弹窗)
- 📊
📁 新增文件
lib/features/inspiration/providers/chat_conversation_provider.dart— 会话Providerlib/features/inspiration/providers/chat_attachment_provider.dart— 附件Providerlib/features/inspiration/services/chat_migration_service.dart— 迁移服务lib/features/inspiration/presentation/chat_settings_page.dart— 聊天设置页lib/features/inspiration/presentation/widgets/chat_attachment_preview.dart— 附件预览组件
📁 修改文件
lib/features/inspiration/providers/chat_provider.dart— 重构为Drift读写lib/features/inspiration/providers/chat_session_provider.dart— 迁移到Driftlib/features/inspiration/models/chat_message.dart— 新增附件类型+fileIcon+readCountlib/features/inspiration/presentation/chat_flow_page.dart— 重构+动画效果lib/features/inspiration/presentation/widgets/chat_bubble.dart— 重构+动画效果lib/features/home/services/cache_service.dart— 新增聊天统计+清理方法lib/features/home/presentation/cache_management_page.dart— 新增聊天统计+清理UIlib/core/router/app_router.dart— 新增chatSettings路由
[4.20.0] - 2026-05-08
✨ 新功能 — 聊天会话流数据库层 + Service层 + IP查询服务
- 数据库层 (Phase 1) — 新增4张Drift表,schemaVersion 8→9:
- 📊
ChatConversations— 聊天会话表(emoji/名称/分类/设置/置顶/同步模式) - 📊
ChatMsgRecords— 消息记录表(类型/角色/内容/已阅/软删除/元信息JSON) - 📊
ChatAttachments— 附件表(文件路径/缩略图/尺寸/云端同步状态) - 📊
IpLocationCaches— IP地址缓存表(ip主键/城市/完整地址) - 🔗 4个索引(消息按会话+时间/已删除,附件按消息/会话)
- 🔄 完整迁移策略(from<9 创建4张表+索引)
- 🏗️ build_runner 代码生成通过(注意:Drift表列名不能为
text,与text()方法冲突)
- 📊
- Service层 (Phase 2) — 5个服务类:
- 📁
ChatFileService— 文件存储(保存/缩略图生成/目录管理/大小计算/清理) - 📁
ChatConversationService— 会话CRUD(创建/置顶/分类管理/背景图/设置JSON) - 📁
ChatMessageService— 消息CRUD(发送/编辑/已阅/软删除/回收站/过期清理) - 📁
ChatAttachmentService— 附件CRUD(创建/删除/云端同步状态) - 🌐
IpQueryService— IP查询(本地Drift缓存优先+远程POST查询+格式验证)
- 📁
- IP查询API验证 — 确认使用POST方法,响应字段为
city(完整地址字符串) - 关键发现 — Drift表定义中列名
text与text()方法冲突,改用content替代
📁 新增文件
lib/features/inspiration/services/chat_file_service.dart— 文件存储服务lib/features/inspiration/services/chat_conversation_service.dart— 会话服务lib/features/inspiration/services/chat_message_service.dart— 消息服务lib/features/inspiration/services/chat_attachment_service.dart— 附件服务lib/features/inspiration/services/ip_query_service.dart— IP查询服务
📁 修改文件
lib/core/storage/database/app_database.dart— 新增4张表+CRUD方法+迁移v9lib/core/storage/database/app_database.g.dart— Drift代码生成更新
🚧 进行中
- Phase 3: Provider层(Riverpod状态管理)
- Phase 4: UI层(聊天页面/消息气泡/输入框/设置页)
- Phase 5: 缓存管理集成
[4.19.0] - 2026-05-08
✨ 新功能 — 通用设置系统全面增强 + 更多设置页面
- 通知权限申请时机修复 — 不再首次启动就申请通知权限,改为在通知设置页开启时才请求
- 通知状态统一数据源 — 通用设置页通知状态改为从 NotificationScheduler (Hive) 实时读取,解决"已关闭"显示不同步问题
- 页面加载方式 — 替换原"滑动返回"开关,支持两种模式:
- 🧭 标准导航 (navigate):支持滑动返回 + 预测返回动画
- 📋 底部面板 (sheet):适合宽屏设备,右上角 ✕ 关闭
- 启动页选项精简 — 移除"发现"选项,保留首页/灵感/我的
- 更多设置页面 (MoreSettingsPage) — 新建独立页面,承接低频/高级设置:
- 📖 内容与搜索:搜索引擎、自动播放、仅WiFi自动播放、搜索历史
- 🔧 开发者:开发者模式、兼容模式、调试信息、网络代理(地址+端口)、API环境(生产/预发布/自定义)
- 🔋 电池与性能:电池优化、后台刷新
- ♿ 辅助功能:高对比度、色弱适配(无/红绿/蓝黄)、文字加粗
- 📁 存储管理:自动清理缓存(从不/1周/1月/3月)
- 通用设置页新增设置项:
- 📐 内容密度(紧凑/标准/舒适)— 调整列表和卡片间距
- 🖼️ 图片质量(原图/高清/省流)— 控制图片加载质量
- 📦 缓存策略(智能/仅WiFi/始终)— 控制内容缓存行为
- 📋 剪贴板读取 — 允许/禁止读取剪贴板内容
- GeneralSettingsState 扩展字段:
imageQualityId/cacheStrategyId/autoClearCacheId/contentDensityIdclipboardReadEnabled/autoPlayWifiOnly/searchHistoryEnableddeveloperModeEnabled/apiEnvironmentId/apiCustomHostbackgroundRefreshEnabled/highContrastEnabled/colorWeakTypeId/boldTextEnabled
- 新增枚举/选项类:
ImageQuality(原图/高清/省流)CacheStrategy(智能/仅WiFi/始终)AutoClearCacheOption(从不/1周/1月/3月)ContentDensity(紧凑/标准/舒适)ApiEnvironment(生产/预发布/自定义)ColorWeakType(无/红绿色弱/蓝黄色弱)
- 路由配置 —
app_router.dart新增/more-settings路由
🔧 修复
- 通知状态不同步 — 通用设置页通知项始终显示"已关闭",改为从 NotificationScheduler 实时读取
- CupertinoIcons 不存在 —
wand_and_stars/bold替换为paintbrush_fill/textformat_abc - 未使用代码清理 — 删除已废弃的
_showFontScalePicker方法(字体大小已重定向至主题页) - 页面加载方式迁移 — 旧
swipeBackEnabled自动迁移为pageTransitionModeId
📁 修改文件
lib/features/settings/presentation/general_settings_page.dart— 通知状态统一+页面加载方式+新增设置项+移除已迁移项lib/features/settings/presentation/more_settings_page.dart— 新建:更多设置页面lib/features/settings/providers/general_settings_provider.dart— 新增字段/枚举/方法+存储持久化+迁移逻辑lib/core/router/app_router.dart— 新增 more-settings 路由lib/core/services/local_notification_service.dart— 移除自动权限申请pubspec.yaml— 版本号更新CHANGELOG.md— 版本日志
[4.18.0] - 2026-05-08
✨ 新功能 — 登录/注册页面重设计 + 认证逻辑修复
- 登录页面重设计 — iOS风格,4种登录方式:
- 🔐 密码登录(用户名/邮箱+密码)
- 📧 验证码登录(邮箱+验证码,回执登录)
- 🔑 Token登录(Token令牌,多设备同步)
- 👤 老用户登录(点击弹出"暂未开放"对话框)
- 头部图标+标题水平排列,左对齐
- 第三方登录入口(Apple/微信/QQ,开发中提示)
- 全部使用 CupertinoIcons 替代 emoji
- 注册页面重设计 — 分步式3步注册:
- Step1: 基本信息(用户名+邮箱)
- Step2: 验证邮箱(验证码输入+重发)
- Step3: 设置密码(密码+确认密码)
- 注册成功后自动登录,无需重启
- 用户协议和隐私政策 — 登录/注册页面底部显示勾选框+链接
- 动态主题适配 — 全部使用AppThemeExtension令牌,支持日间/夜间/AMOLED
🔧 修复
- 验证邮箱后实时登录 — 注册成功后立即标记为已登录状态
- 冷启动闪烁修复 — AuthNotifier初始化改为缓存优先+后台Token检测:
- 读取缓存用户→立即显示(无闪烁)
- 后台静默调用checkToken检测有效性
- 仅在Token失效时才清除登录状态
- 不再每次冷启动都重新调用tokenLogin API
📁 修改文件
lib/features/auth/presentation/login_page.dart— 重写登录/注册页面lib/features/auth/providers/auth_provider.dart— 初始化逻辑修复lib/features/auth/services/auth_service.dart— 新增validateLocalTokenpubspec.yaml— 版本号更新CHANGELOG.md— 版本日志
[4.17.1] - 2026-05-08
🔧 修复 — Web端WASM数据库崩溃 + Windows/Web端LiquidGlass警告消除
- Web端 drift WASM localtime 导入错误修复(致命级) — Web端启动时数据库崩溃:
- 原因:
drift_worker.js是旧版本编译产物,缺少localtimeWASM导入函数 - 错误:
LinkError: WebAssembly.instantiate(): Import #0 "dart" "localtime" - 修复:新建
web/drift_worker.dart入口文件,使用WasmDatabase.workerMainForOpen()重新编译 - 编译命令:
dart compile js -O2 -o web/drift_worker.js web/drift_worker.dart - 效果:Web端数据库正常加载,不再出现 WASM LinkError
- 原因:
- LiquidGlassLayer Impeller 警告消除 — Windows/Web端每次导航都输出重复警告:
- 原因:
LiquidGlassLayer在非 Impeller 平台(Windows/Web/Skia)每次 build 都输出 WARNING - 修复1:
liquid_glass_layer.dart将 WARNING 降级为 FINE,且仅输出一次 - 修复2:
adaptive_liquid_glass_layer.dart在非 Impeller 平台跳过LiquidGlassLayer,改用BackdropFilter回退 - 效果:控制台不再刷屏 WARNING,毛玻璃效果通过 BackdropFilter 回退实现
- 原因:
📁 修改文件
web/drift_worker.dart— 新建 Web Worker 入口文件web/drift_worker.js— 重新编译,包含 localtime WASM 导入packages/liquid_glass_widgets/lib/src/renderer/rendering/liquid_glass_layer.dart— 警告降级+去重packages/liquid_glass_widgets/lib/widgets/shared/adaptive_liquid_glass_layer.dart— 非 Impeller 平台 BackdropFilter 回退
[4.13.0] - 2026-05-07
✨ 新功能 — 服务层增强:从空壳到真实实现
- ScreenWakeService 增强 — 初始化从KV存储读取并应用:
- 新增
init()方法,启动时自动恢复用户设置 - main.dart 中初始化调用
- 新增
- SoundService 增强 — 集成 audioplayers 替换 SystemSound:
- 使用 AudioPlayer 播放 assets/sounds/ 下的真实音效文件
- 3种音效风格:标准/清脆/柔和
- 音量控制 + KV存储持久化
- 7种操作音效:click/toggle/success/error/alert/delete/send
- main.dart 中初始化调用
- 启动页设置 — GoRouter 读取 startupPageId 设置初始路由:
_resolveInitialLocation()根据存储值返回首页/发现/灵感/我的- 支持应用重启后保持用户选择
- AppLockService 增强 — 集成 local_auth 替换 MethodChannel:
- 使用 LocalAuthentication API 实现生物识别
isDeviceSupported()/canCheckBiometrics()/getAvailableBiometrics()- 错误码处理(notAvailable/notEnrolled)
- App 层 WidgetsBindingObserver 生命周期监听
- XianyanApp 从 ConsumerWidget 升级为 ConsumerStatefulWidget
- BatteryOptimizationService 增强 — 集成 battery_plus 实时监听:
- 实时电量 + 充电状态监听
isLowBattery/isCharging/shouldReduceQuality()便捷属性- main.dart 中初始化调用
- SettingsExportService 修复 — 修复 import 逻辑 bug + 集成 file_picker:
- 修复原 import 逻辑跳过 general_ 前缀条目的 bug
- 新增
pickImportFile()使用 FilePicker 选择 JSON 文件 - 新增
pickAndImport()一键选择并导入
- NetworkProxyService 新建 — 网络代理配置服务:
- 支持 HTTP/SOCKS5 代理类型
createProxiedClient()创建代理 HttpClienttestConnection()代理连接测试configure()/reset()统一配置
- Logger 增强 — 日志导出功能:
filterByLevel()按级别过滤exportToJson()/exportToText()导出为 JSON/纯文本exportToFile()导出到文件shareLogs()分享日志文件
- DataExportService 增强 — 接入 AppDatabase 真实数据查询:
- 收藏数据:
_db.getFavoriteSentences() - 阅读历史:
_db.getHistorySentencesWithTime(limit: 500) - 设置数据:KV存储批量读取
- 收藏数据:
- GeneralSettingsProvider 同步 — Provider 与服务双向绑定:
setAppLockEnabled()→ AppLockService.setEnabled()setBatteryOptimizationEnabled()→ BatteryOptimizationService.setEnabled()setProxyEnabled/Host/Port()→ NetworkProxyServiceresetAll()同步重置所有服务
📦 新增三方库
audioplayers: ^6.1.0— 音效播放local_auth: ^2.3.0— 生物识别应用锁battery_plus: ^6.1.0— 电池状态监听
📁 修改文件
lib/core/services/screen_wake_service.dart— 增强:init() + KV存储读取lib/core/services/sound_service.dart— 重写:audioplayers 替换 SystemSoundlib/core/services/app_lock_service.dart— 重写:local_auth 替换 MethodChannellib/core/services/battery_optimization_service.dart— 重写:battery_plus 实时监听lib/core/services/settings_export_service.dart— 修复:import bug + file_pickerlib/core/services/network_proxy_service.dart— 新建:网络代理服务lib/core/services/data_export_service.dart— 增强:AppDatabase 真实查询lib/core/utils/logger.dart— 增强:日志导出+过滤+分享lib/core/router/app_router.dart— 修改:启动页初始路由 + KV存储导入lib/app/app.dart— 重构:ConsumerStatefulWidget + WidgetsBindingObserverlib/main.dart— 修改:新增3个服务初始化lib/features/settings/providers/general_settings_provider.dart— 修改:服务双向绑定pubspec.yaml— 修改:新增 audioplayers/local_auth/battery_plus + assets/sounds/assets/sounds/— 新建:音效资源目录
[4.12.0] - 2026-05-07
✨ 新功能 — 通用设置扩展(P2+P3) + 新服务
- ScreenWakeService 屏幕常亮服务 — 新增独立屏幕常亮管理服务:
- 支持6种超时策略:跟随系统/30秒/1分钟/2分钟/5分钟/常亮
- 集成 wakelock_plus 实现屏幕常亮
- 临时常亮模式(阅读场景)
- 通用设置页屏幕常亮时间选择器自动同步
- SoundService 音效服务 — 新增轻量版音效服务:
- 使用系统音效(SystemSound)实现,无需额外三方库
- 3种音效风格:标准/清脆/柔和
- 统一 API:playClick() / playToggle() / playSuccess() / playError()
- 通用设置页声音开关+音效风格自动同步
- 通用设置P2新增 — 体验增强设置项:
- 启动页选择(首页/发现/灵感/我的)
- 字体大小缩放(特小0.8x/小0.9x/标准1.0x/大1.15x/特大1.3x)
- 滑动返回开关
- 长按预览开关
- 自动播放GIF/视频开关
- 搜索引擎选择(内置/百度/必应/谷歌)
- 通用设置P3新增 — 锦上添花设置项:
- 导出/导入设置(JSON格式迁移)
- 应用锁(生物识别解锁)
- 电池优化(低电量自动省流)
- 网络代理(调试模式专用)
- 日志管理(日志查看器+导出)
- 隐私政策查看
- 数据导出(个人数据JSON导出)
- GeneralSettingsState 扩展 — 新增字段:
reduceAnimations/darkModeId/autoPlayEnabled/fontScaleIdstartupPageId/swipeBackEnabled/longPressPreviewEnabled/searchEngineId- 新增
DarkModeType枚举(跟随系统/浅色/深色) - 新增
FontScaleOption/StartupPageOption/SearchEngineOption选项常量
- AppRadius 扩展 — 新增
xs/xsBorder极小圆角令牌
📁 修改文件
lib/core/services/screen_wake_service.dart— 新建:屏幕常亮服务lib/core/services/sound_service.dart— 新建:音效播放服务lib/core/services/settings_export_service.dart— 新建:设置导出/导入服务lib/core/services/app_lock_service.dart— 新建:应用锁服务lib/core/services/battery_optimization_service.dart— 新建:电池优化服务lib/core/services/data_export_service.dart— 新建:数据导出服务lib/core/utils/logger.dart— 重构:新增 LogLevel/LogEntry + 内存缓冲lib/core/theme/app_radius.dart— 修改:新增 xs/xsBorderlib/features/settings/providers/general_settings_provider.dart— 重构:新增P2+P3字段+服务集成lib/features/settings/presentation/general_settings_page.dart— 修改:新增P2+P3设置项UIlib/features/settings/presentation/log_viewer_page.dart— 新建:日志查看器页面lib/features/settings/presentation/privacy_policy_page.dart— 新建:隐私政策页面lib/core/router/app_router.dart— 修改:新增隐私政策+日志查看器路由
[4.11.0] - 2026-05-07
✨ 新功能 — 通用设置重构 + 权限管理
- HapticService 触觉反馈服务 — 新增独立触觉反馈服务,支持4档位震动控制:
- 关闭(off) / 轻柔(light) / 标准(medium) / 强烈(heavy)
- 统一 API:
impact()/selection()/toggleSwitch()/notification() - 全局级别管理,所有交互自动适配当前档位
- GeneralSettingsState 重构 — 震动从布尔值升级为4档位系统:
vibrationEnabled: bool→vibrationLevelId: String(off/light/medium/heavy)- 新增
soundEffectTypeId(默认/清脆/柔和) - 新增
immersiveStatusBar、autoCheckUpdate、dataSaverMode、languageId字段 - 兼容旧数据迁移:
vibration: bool→vibration_level: String - 缓存大小真实计算(遍历 temp/documents/support 目录)
- 缓存清除真实执行(删除临时目录文件)
- PermissionService 扩展 — 权限管理服务增强:
- 新增位置权限(
AppPermission.location) - 新增批量状态查询
checkAllStatus() - 每个权限带图标、颜色、说明描述
- iOS 风格权限请求对话框
- 新增位置权限(
- 权限管理页面(PermissionManagementPage) — 新增独立权限管理页面:
- 展示所有权限状态(已授权/未授权/已拒绝/未请求/受限)
- 支持请求权限 / 跳转系统设置
- 下拉刷新权限状态
- 权限说明头部卡片
- 通用设置页面UI重构 — 整体重写,iOS 26 风格:
- 所有 emoji 替换为 CupertinoIcons,带圆角背景色容器
- 6大分组:交互/通知/显示/性能/隐私与权限/高级
- 震动4档位 CupertinoPicker 选择器
- 音效风格/屏幕常亮时间/语言选择器
- 搜索栏快速过滤设置项
- 底部"你可能在找"推荐区域(主题个性化/字体管理/数据管理)
- 底部极简版本号+版权信息
- 清除缓存/重置设置确认对话框
- 路由注册 —
AppRoutes.permissionManagement路由常量 + GoRoute 定义
📁 修改文件
lib/core/services/haptic_service.dart— 新建:触觉反馈服务(4档位)lib/core/services/permission_service.dart— 重构:新增位置权限+批量查询+权限说明lib/features/settings/providers/general_settings_provider.dart— 重构:震动4档位+新字段+缓存计算lib/features/settings/presentation/general_settings_page.dart— 重写:iOS风格UI+分组+搜索+底部视图lib/features/settings/presentation/permission_management_page.dart— 新建:权限管理页面lib/core/router/app_router.dart— 新增 permissionManagement 路由
已归档版本
4.10.0(关于页面+图标统一+tz.local崩溃修复) / 3.9.9(画布样式编辑面板+叠层效果+虚线边框) / 3.9.8(拖拽描边偏移/文本回写/壁纸无限加载/工具抽屉/画布圆角动态调整) / 3.9.7(画布圆角显示+导出修复+401修复) / 3.9.6(画布圆角/文字按钮卡死/描述线条偏移) / 3.9.5(Bug回归修复:壁纸卡死/文字按钮/画布圆角/壁纸源加载/编辑器闭合) / 3.9.4(Bug回归修复:本地化/HTTP明文/画布圆角) / 3.9.3(Bug回归修复:画布圆角/壁纸卡死/文字按钮) / 3.9.2(Bug修复:画布圆角/文字按钮/壁纸/描边) / 3.9.1(Bug修复:历史卡死/同步丢失/画布圆角/emoji替换) / 3.9.0(编辑器增强:拖拽描边+富文本+画布圆角) / 3.8.0 / 2.58.0(六大Bug修复+键盘适配公共类) / 2.57.0(Phase35开发计划5大方向36项功能) / 2.56.0(README全面更新功能梳理+可扩展方向) / 2.55.1(全局代码质量清理188→0issues) / 1.55.0(灵感页面重构联系人列表+长按菜单+搜索+足迹整合) / 1.54.0(修复个人中心+签到Bug+调试信息页) / 1.53.0(修复分类列表不更新+句子空白+骨架屏体验优化) / 1.52.0(修复句子卡片数据永不更新根因修复) / 1.51.0(修复句子卡片循环重复+Slidable切换分类) / 1.50.0(修复频道同步延迟+滑动冲突+卡片重复) / 1.49.0(修复刷新无响应+分类同步+卡片重复+广场空白+滑动冲突) / 1.48.0(修复句子广场无限循环+分类过滤+空白句子+作者显示) / 1.47.0(修复API类型转换崩溃+频道开关同步+句子广场加载) / 1.46.0(句子来源页面改造+混合信息流5种模式+首页卡片来源配置) / 1.45.0(笔记自动保存+字数统计+保存状态+上限提示) / 1.44.2(笔记模块五大Bug修复:时间戳/布局切换/菜单拦截/空标题/删除刷新) / 1.44.1(笔记删除后仍显示-ThinkPHP5查询构建器Bug) / 1.44.0(API集成补全+互动收藏笔记增强+笔记页重新设计) / 1.40.0(用户安全接口升级-回执验证替代邮箱验证码) / 1.39.0(卡片震动/Slidable冲突修复/分类切换优化/API功能全面接入阶段三六) / 1.31.0(API功能全面接入:学习中心/签到增强/国学经典/健康生活/推荐偏好/Feed互动/数据可视化/游戏中心) / 1.30.0(中国传统色页面增强重构) / 1.23.0(Phase A偷工减料修复+Phase B缺失功能补全) / 1.22.0(句子广场交互增强:间距优化/循环滚动/边缘光晕) / 1.21.0(Bug修复:数据管理卡死/Tab抖动/密码页/详情Sheet/字体管理) / 1.20.0 / 1.19.0 / 1.18.0 / 1.17.0 / 1.16.0 / 1.15.0 / 1.14.0 / 1.13.0 / 1.10.0 / 1.7.16 / 1.7.15 / 1.7.14 / 1.7.13 / 1.7.12 / 1.7.11 / 1.7.10 / 1.7.9 / 1.7.8 / 1.7.7 / 1.7.6 / 1.7.5 / 1.7.4 / 1.7.3 / 1.7.2 / 1.7.1 / 1.7.0 / 1.6.4 / 1.6.3 / 1.6.2 / 1.6.1 / 1.6.0 / 1.5.2 / 1.5.1 / 1.5.0 / 1.4.1 / 1.4.0 / 1.3.0 / 1.2.0 / 0.28.x / 0.27.0 / 0.26.0 — 详见 git history