HarmonyOs应用《日记本》开发第18篇 - 日记详情页面 DiaryDetail 详解
本篇分析日记详情展示页面的实现包括数据加载、信息展示、编辑跳转和删除交互。一、页面功能概述DiaryDetail 页面用于展示单条日记的完整内容提供以下功能展示日记的日期、天气、心情、内容支持跳转到编辑页面修改支持删除当前日记返回列表页面二、页面状态与生命周期2.1 状态定义EntryComponentstruct DiaryDetail{Statediary:DiaryInfonewDiaryInfo()StateisLoading:booleantrueStateshowDeleteDialog:booleanfalseprivatestore:DiaryStoreDiaryStore.getInstance()privatediaryId:string}2.2 接收路由参数aboutToAppear(){constparamsrouter.getParams()asRecordstring,stringif(paramsparams.id){this.diaryIdparams.idthis.loadDiaryDetail(this.diaryId)}else{promptAction.showToast({message:参数错误,duration:2000})router.back()}}参数获取流程从路由参数中提取id若id存在加载对应日记数据若id缺失提示错误并返回上一页三、数据加载privateasyncloadDiaryDetail(id:string){this.isLoadingtruetry{constresultawaitthis.store.getDiaryById(id)if(result){this.diaryresult}else{promptAction.showToast({message:日记不存在,duration:2000})setTimeout((){router.back()},1500)}}catch(error){console.error(加载日记详情失败: error)promptAction.showToast({message:加载失败,duration:2000})}finally{this.isLoadingfalse}}加载流程说明异步从 Preferences 存储中读取数据存在时更新State diary数据不存在时提示并自动返回finally确保加载状态重置四、页面布局4.1 整体结构┌──────────────────────────────┐ │ ← 返回 日记详情 编辑 │ 导航栏 ├──────────────────────────────┤ │ │ │ 2026年7月24日 │ 日期 │ 星期四 │ │ │ │ ┌──────┐ ┌──────┐ │ │ │☀️ 晴天│ │ 开心│ │ 天气与心情 │ └──────┘ └──────┘ │ │ │ │ ━━━━━━━━━━━━━━━━━━━━━━━━ │ 分割线 │ │ │ 今天是一个美好的日子。 │ 日记内容 │ 早上起床后去公园跑步 │ │ 阳光正好微风轻拂。 │ │ 下午看了一本好书 │ │ 学到了很多新知识... │ │ │ │ │ │ [删除日记] │ 删除按钮 └──────────────────────────────┘4.2 顶部导航栏Row(){Text(返回).fontSize(16).onClick((){router.back()})Text(日记详情).fontSize(18).fontWeight(FontWeight.Bold).layoutWeight(1).textAlign(TextAlign.Center)Text(编辑).fontSize(16).fontColor(#007DFF).onClick((){this.goToEdit()})}.width(100%).height(56)五、内容展示5.1 日期信息Column({space:4}){Text(this.formatDisplayDate(this.diary.date)).fontSize(24).fontWeight(FontWeight.Bold)Text(this.getWeekday(this.diary.date)).fontSize(14).fontColor(#999)}.width(100%).padding(20).alignItems(HorizontalAlign.Start)5.2 日期格式化展示privateformatDisplayDate(dateStr:string):string{constdatenewDate(dateStr)return${date.getFullYear()}年${date.getMonth()1}月${date.getDate()}日}privategetWeekday(dateStr:string):string{constdatenewDate(dateStr)constweekdays[星期日,星期一,星期二,星期三,星期四,星期五,星期六]returnweekdays[date.getDay()]}5.3 天气与心情标签Row({space:12}){// 天气标签Row({space:6}){Text(this.diary.weather).fontSize(14)}.padding({left:12,right:12,top:6,bottom:6}).backgroundColor(#E3F2FD).borderRadius(16)// 心情标签Row({space:6}){Text(this.diary.mood).fontSize(14)}.padding({left:12,right:12,top:6,bottom:6}).backgroundColor(#FFF3E0).borderRadius(16)}.padding({left:20,right:20})5.4 日记内容Text(this.diary.content).fontSize(16).lineHeight(28).padding(20).width(100%)文本展示要点lineHeight(28)增加行高提升阅读体验fontSize(16)适合长文阅读全宽展示充分利用屏幕空间六、交互功能6.1 跳转编辑privategoToEdit(){router.pushUrl({url:pages/DiaryEdit,params:{mode:edit,id:this.diaryId}})}6.2 页面返回刷新onPageShow(){if(this.diaryId){this.loadDiaryDetail(this.diaryId)}}当从编辑页面返回时重新加载数据以确保展示最新内容。6.3 删除确认privateshowDeleteConfirm(){AlertDialog.show({title:确认删除,message:确定要删除这篇日记吗删除后不可恢复。,primaryButton:{value:取消,action:(){// 取消删除}},secondaryButton:{value:删除,fontColor:#FF3B30,action:(){this.deleteDiary()}}})}6.4 执行删除privateasyncdeleteDiary(){try{awaitthis.store.deleteDiary(this.diaryId)promptAction.showToast({message:删除成功,duration:1500})setTimeout((){router.back()},1000)}catch(error){console.error(删除日记失败: error)promptAction.showToast({message:删除失败,duration:2000})}}删除流程点击删除 → AlertDialog确认 │ ├──取消──→ 关闭弹窗 │ └──确认──→ 调用Store删除 → Toast提示 → 延迟返回列表页七、加载状态处理if(this.isLoading){Column(){LoadingProgress().width(40).height(40)Text(加载中...).fontSize(14).fontColor(#999).margin({top:12})}.width(100%).height(100%).justifyContent(FlexAlign.Center)}else{// 正常内容展示this.DiaryContent()}八、完整页面构建build(){Column(){// 顶部导航栏this.TopBar()if(this.isLoading){this.LoadingView()}else{Scroll(){Column(){this.DateSection()this.TagSection()this.ContentSection()this.DeleteButton()}.width(100%)}.layoutWeight(1)}}.width(100%).height(100%).backgroundColor(#FAFAFA)}九、总结DiaryDetail 页面的核心设计单一职责专注展示单条日记详情编辑功能跳转到独立页面数据安全删除前必须二次确认防止误操作状态完整加载中、数据存在、数据缺失三种状态都有处理返回刷新从编辑页返回时自动重新加载用户体验格式化日期、友好标签、行距优化阅读体验详情页是 CRUD 应用中典型的 “Read” 页面其设计模式适用于各类信息展示场景。

相关新闻

HarmonyOs应用《日记本》开发第17篇 - 日记编辑页面 DiaryEdit 详解

HarmonyOs应用《日记本》开发第17篇 - 日记编辑页面 DiaryEdit 详解

本篇详细分析日记编辑页面的实现,包括表单输入、日期选择、天气心情标签选择以及数据保存逻辑。一、页面功能概述 DiaryEdit 页面是日记应用的核心交互页面,承担了"新建"和"编辑"两种模式: 新建模式:初始化空…

2026/7/27 4:28:08 阅读更多 →
AI时代的人类认知革命与协作策略

AI时代的人类认知革命与协作策略

1. 当AI成为日常:我们正在经历的认知革命上周团队里一位资深设计师提交的方案让我愣了三分钟——那些精准的用户动线分析、恰到好处的色彩搭配,居然全出自AI工具。这让我突然意识到,我们早已身处一个连专业壁垒都在消融的时代。当AI开始承担从…

2026/7/27 4:28:08 阅读更多 →
HarmonyOs应用《日记本》开发第16篇 - 日记列表页面 Index 详解

HarmonyOs应用《日记本》开发第16篇 - 日记列表页面 Index 详解

本篇深入剖析鸿蒙日记应用的核心入口页面——Index 日记列表页的完整实现,涵盖页面结构、状态管理、数据加载与交互逻辑。一、页面概述 Index 页面是整个日记应用的首页,用户打开应用后首先看到的就是日记列表。该页面负责: 展示所有已创建的…

2026/7/27 4:28:08 阅读更多 →

最新新闻

Transformer在深度强化学习中的革命性应用

Transformer在深度强化学习中的革命性应用

1. 项目概述Transformer架构在自然语言处理领域大获成功后,正在深度强化学习(Deep Reinforcement Learning, DRL)领域掀起一场革命。这场技术融合正在重塑序列决策问题的解决范式,为机器人控制、游戏AI、自动驾驶等复杂决策场景带…

2026/7/27 4:38:12 阅读更多 →
Transformer架构核心原理与实践优化指南

Transformer架构核心原理与实践优化指南

1. Transformer架构核心原理解析 Transformer模型自2017年由Google团队提出以来,已经成为自然语言处理领域的基石架构。这个看似复杂的系统实际上建立在一系列精妙设计的模块之上,我们不妨将其想象成一个高效的多语言翻译团队:每个成员&#…

2026/7/27 4:38:12 阅读更多 →
命令行智能助手:自然语言交互提升运维效率

命令行智能助手:自然语言交互提升运维效率

1. 项目概述:当命令行遇上自然语言在运维和开发领域,命令行工具是日常排障的利器。但面对复杂的参数组合和晦涩的命令语法,即便是经验丰富的工程师也难免需要频繁查阅手册。catpaw chat的出现,为这个痛点提供了全新的解决方案——…

2026/7/27 4:38:12 阅读更多 →
Pixel-to-Space技术:智能仓储的视觉革命

Pixel-to-Space技术:智能仓储的视觉革命

1. 项目概述:当像素遇见空间——仓储智能化的新范式在物流行业摸爬滚打十年,我见过太多仓库还在用纸质标签和人工记忆管理货架。直到去年参与某3C电子仓改造项目,第一次接触Pixel-to-Space技术体系时,才真正理解什么叫"用图像…

2026/7/27 4:38:12 阅读更多 →
TMS320C55x DSP时钟与内存接口时序设计实战指南

TMS320C55x DSP时钟与内存接口时序设计实战指南

1. 项目概述与核心价值在嵌入式硬件开发,尤其是基于德州仪器(TI)TMS320C55x系列DSP的设计中,时钟与内存接口的时序设计是决定系统能否稳定运行在标称最高频率下的基石。很多工程师在初次接触这类高速数字系统时,往往会…

2026/7/27 4:38:12 阅读更多 →
C++高性能线程池优化:任务队列设计与调度策略深度解析

C++高性能线程池优化:任务队列设计与调度策略深度解析

1. 项目概述:为什么我们需要一个“聪明”的线程池?在C高性能服务端开发里,线程池几乎是每个项目的标配。它就像餐厅的后厨,任务就是一道道待烹饪的菜肴,线程就是厨师。一个朴素的线程池,可能就是一个简单的…

2026/7/27 4:37:12 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻