【OpenHarmony/HarmonyOs 】数学知识库收藏管理:标签筛选、详情弹窗与近场分享数据准备

发布时间:2026/9/7 19:56:04

【OpenHarmony/HarmonyOs 】数学知识库收藏管理:标签筛选、详情弹窗与近场分享数据准备
【OpenHarmony/HarmonyOs 】数学知识库收藏管理标签筛选、详情弹窗与近场分享数据准备项目类型OpenHarmony / HarmonyOS ArkTS 数学学习应用项目名称数学视界对应主题近场快传、全场景智慧生活、隐私保护方案关键词ArkTS、收藏系统、知识库、标签筛选、详情弹窗、结构化数据 一、为什么收藏系统不只是“加个爱心”在数学视界项目中收藏系统不是简单地把某个条目标记为喜欢而是一个个人数学知识库。用户可以收藏公式知识点趣味百科图形方案历史内容自定义笔记。这就让收藏系统具备了更大的扩展空间本地复习标签筛选详情查看编辑备注删除整理近场分享备份恢复元服务“最近收藏”入口。所以这篇文章重点写FavoritesPage.ets如何把收藏做成结构化知识库。二、收藏页面状态分类、标签、搜索、排序收藏页的状态比较完整StateselectedCategory: string 全部Statecategories: string[] [全部,公式,知识点,趣味百科,图形,历史,自定义]StateallTags: string[] [全部,几何,代数,三角,函数,概率,导数,常数,基础,趣味百科,画板]StateselectedTag: string 全部StatesearchKeyword: string StatesortType: string 最新StateviewMode: string listStatefavorites: FavoriteItem[] []StatefilteredFavorites: FavoriteItem[] []这说明收藏页支持多维度管理按分类看按标签看按关键词搜按最新/最早/名称/分类排序列表视图和网格视图切换。对学习应用来说这些能力比单纯“收藏/取消收藏”更有价值。三、FavoriteItem收藏条目的统一结构全局收藏类型定义在AppState.etsexport interface FavoriteItem {id:stringtype:stringtitle:stringcontent:stringcategory:stringicon:stringbgColor:stringaccentColor:stringnote:stringtags:string[] createdAt:numberupdatedAt:numbergraphData?:stringthumbnail?:string}这个结构的亮点是它能统一承载多种内容公式type formula知识点type knowledge图形type graph可带graphData自定义笔记type custom。尤其是graphData字段它为后续近场快传数学图形方案做了准备。分享时不一定要传图片可以传结构化数据。四、筛选逻辑分类、标签、关键词组合过滤收藏页的核心筛选逻辑如下private doFilter(): void {let result: FavoriteItem[] this.favoritesif (this.selectedCategory! 全部) { result result.filter((item: FavoriteItem): boolean item.category this.selectedCategory) } if (this.selectedTag! 全部 this.selectedTag! ) { result result.filter((item: FavoriteItem): boolean item.tags.indexOf(this.selectedTag) 0 ) } if (this.searchKeyword.trim() ! ) { const kw: string this.searchKeyword.toLowerCase() result result.filter((item: FavoriteItem): boolean item.title.toLowerCase().indexOf(kw) 0 || item.content.toLowerCase().indexOf(kw) 0 || item.note.toLowerCase().indexOf(kw) 0 ) } this.filteredFavorites result }这个逻辑非常适合个人知识库想看公式选“公式”想看函数相关内容选“函数”标签想找某个关键词直接搜索标题、内容、备注多个条件可以叠加。五、排序让知识库更容易整理收藏页支持四种排序if(this.sortType 最新) { result.sort((a: FavoriteItem,b: FavoriteItem):numberb.createdAt - a.createdAt ) }elseif(this.sortType 最早) { result.sort((a: FavoriteItem,b: FavoriteItem):numbera.createdAt - b.createdAt ) }elseif(this.sortType 名称) { result.sort((a: FavoriteItem,b: FavoriteItem):numbera.title.localeCompare(b.title,zh-CN) ) }elseif(this.sortType 分类) { result.sort((a: FavoriteItem,b: FavoriteItem):numbera.category.localeCompare(b.category,zh-CN) ) }这些排序方式对应不同学习场景最新复习最近收藏最早回顾长期积累名称按知识点查找分类整理知识结构。六、添加收藏自定义内容也能进入知识库收藏页支持用户手动添加内容addFavorite(): void {if(this.addTitle.trim() ) {this.showToast(⚠️ 请输入标题)return}if(this.addContent.trim() ) {this.showToast(⚠️ 请输入公式/内容)return}constparsedTags: string[] this.addTags.split(/[,]/) .map((t: string): string t.trim()) .filter((t: string): boolean t !)constnewItem: FavoriteItem { id: Date.now().toString(), type:this.addCategory 公式?formula:custom, title:this.addTitle.trim(), content:this.addContent.trim(), category:this.addCategory, icon: iconMap[this.addCategory] ??, note:this.addNote.trim() !?this.addNote.trim() :用户收藏, tags: parsedTags, createdAt: Date.now(), updatedAt: Date.now(), } AppState.addFavorite(newItem) }这让收藏页不仅能接收系统内置公式、百科、画板也能接收用户自己的笔记。七、编辑与详情弹窗收藏需要可维护收藏详情弹窗展示了标题、分类、内容、备注、标签Text(this.selectedItem.title)Text(this.selectedItem.category · this.formatDate(this.selectedItem.createdAt))Text(this.selectedItem.content)Text(this.selectedItem.note||暂无备注)标签展示ForEach(this.selectedItem.tags, (tag:string) {Text(tag).fontSize(12).fontColor(#FF7A8A).backgroundColor(this.getIconBg(#FFE8F0)) .borderRadius(10)})底部提供编辑和删除Button(✏️ 编辑) .onClick(() {this.showDetailDialog falsethis.openEditDialog(this.selectedItem!) }) Button(️ 删除) .onClick(() {this.removeFavorite(this.selectedItem!.id)this.showDetailDialog false})知识库不是越多越好也需要整理。编辑和删除能力能让用户保持收藏质量。八、近场分享为什么结构化收藏很重要如果后续接入近场快传收藏系统可以直接作为分享数据来源interface FavoriteSharePackage {version:numbertype:stringtitle:stringcontent:stringcategory:stringnote:stringtags:string[] graphData?:string}比如分享一条公式分享一篇趣味百科分享一个图形画板方案分享一组标签下的知识点。结构化分享比截图更适合学习场景因为接收方可以继续编辑、收藏和复习。九、隐私保护收藏默认留在本地收藏内容可能包含用户的学习重点、错题备注、个人笔记所以它也属于需要保护的学习数据。当前项目的收藏管理是本地状态refreshFavorites(): void { this.favorites AppState.favoritesthis.doFilter() }默认不上传、不共享、不做 AI 识图。用户主动触发分享时再生成结构化数据包是更稳妥的方式。十、全场景扩展收藏可以成为学习资产中心收藏页后续可以扩展到多个场景场景用法元服务展示最近收藏的公式近场快传分享公式卡片或图形方案备份恢复换机保留个人知识库今日复习从收藏中抽取一条知识点学习报告统计收藏分类分布这说明收藏系统不是附属功能而是学习资产中心。十一、总结这篇文章贴合近场快传、全场景智慧生活和隐私保护主题重点是数学视界的收藏知识库。核心实现包括 用FavoriteItem统一承载公式、知识点、百科、图形和自定义内容 用分类、标签、关键词组合筛选 支持最新、最早、名称、分类排序 用详情弹窗展示内容、备注和标签✏️ 支持编辑和删除方便维护知识库质量 通过graphData为图形方案分享做准备 默认本地管理用户主动触发时再分享。对数学学习 App 来说收藏系统的价值不只是“喜欢”。它真正承载的是用户长期积累的学习资产。

相关新闻

大模型评测与AI产品质量保障:第21篇 传统基准测试实战(二):GSM8K、MATH 与 TruthfulQA

大模型评测与AI产品质量保障:第21篇 传统基准测试实战(二):GSM8K、MATH 与 TruthfulQA

2026/9/1 11:12:04

IT策士 10余年一线大厂经验,专注大模型测试、AI产品质量保障与职场进阶。我会在各个平台持续发布最新文章,助你少走弯路。上一篇我们拆解了 MMLU 和 HellaSwag,一个测"知识储备",一个测"常识推理"。但大模型最…

Playwright 项目脚手架与多项目管理

Playwright 项目脚手架与多项目管理

2026/9/7 7:07:09

🧠 一、核心问题理解 在学习 Playwright 自动化过程中,经常会遇到两个问题: 1. npx playwright init 是什么? 2. 多个项目(网报A / CRM)怎么管理? 3. 是否需要复制脚手架?&#x1f6…

数字图像处理 2.7 节:像素邻接与连通性辨析,4邻域/8邻域在OpenCV中的3种实现对比

数字图像处理 2.7 节:像素邻接与连通性辨析,4邻域/8邻域在OpenCV中的3种实现对比

2026/9/7 16:35:53

像素邻接与连通性在OpenCV中的3种实现方法深度解析引言:为什么像素关系如此重要当我们第一次接触数字图像处理时,往往会被各种炫目的滤镜和特效吸引。但真正决定图像处理质量的基石,却是那些看似枯燥的基础概念——比如像素间的邻接关系和连通…

gstack Pacing Updates 设计解读:如何把 30–50 次审查中断压缩到可接受范围

gstack Pacing Updates 设计解读:如何把 30–50 次审查中断压缩到可接受范围

2026/9/7 19:52:18

gstack Pacing Updates 设计解读:如何把 30–50 次审查中断压缩到可接受范围 【免费下载链接】gstack Use Garry Tans exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA 项目地址…

RabbitMQ实战指南:SpringBoot整合、死信队列与消息可靠性设计

RabbitMQ实战指南:SpringBoot整合、死信队列与消息可靠性设计

2026/9/7 19:52:18

1. 先说结论:RabbitMQ到底解决什么问题 直接回答被问了几百次的困惑——什么场景会用到RabbitMQ?一句话讲清楚: 当你的业务里存在“生产者只管把消息发出去,但不想等消费者马上处理完”的异步需求,或者多个服务需要对…

Node.js卸载不干净?Windows下彻底清理与重装指南

Node.js卸载不干净?Windows下彻底清理与重装指南

2026/9/7 19:52:18

1. 项目概述:Node.js 版本混乱与卸载重装的需求分析 1.1 为什么 Node.js 卸载后反而更闹心 Node.js 这个东西,装的时候一路 Next 很简单,但真正让人头疼的是卸载。我见过太多人卸载完 Node.js 再重装新版本,结果 node -v 显示的…

基于SpringBoot的健身房管理系统实战:预约防冲突与Flowable审批流

基于SpringBoot的健身房管理系统实战:预约防冲突与Flowable审批流

2026/9/7 19:52:18

很多人拿到《基于SpringBoot的健身房管理系统的设计与实现》这个题目,第一反应是“又一个CRUD练手项目”。说实话,我当初也是这么想的。但真正动手之后才发现,健身房这个场景比想象中要复杂得多:会员卡种的状态流转、私教课的预约…

Spring Boot在线招聘求职系统:全栈项目实战与答辩攻略

Spring Boot在线招聘求职系统:全栈项目实战与答辩攻略

2026/9/7 19:52:18

最近好多人在做Spring Boot在线招聘与求职管理系统这个毕设题目,后台也经常收到私信问这个源码怎么跑起来、功能怎么做、答辩怎么讲。这类系统确实是计算机毕业设计里的常青树,业务闭环完整、角色清晰、技术点覆盖全面,从Java基础到框架整合再…

NearLink技术解析:智能汽车无线通信的新选择,对比蓝牙与Wi-Fi的优势

NearLink技术解析:智能汽车无线通信的新选择,对比蓝牙与Wi-Fi的优势

2026/9/7 19:42:18

1. 为什么智能汽车需要一门新的无线技术:从手机耳机到座舱域控聊到智能汽车里的无线连接,很多人第一反应是蓝牙、Wi-Fi、UWB这些老面孔。确实,从车钥匙到车载蓝牙电话再到手机互联,这几项技术撑起了过去十年的智能座舱体验。但这两…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/7 3:44:24

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/7 8:03:37

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

远程协作的工作台整理

远程协作的工作台整理

2026/9/7 3:38:07

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/6 23:21:51

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…