及时做APP开发实战(十四)-专注页面待办选择优化
及时做APP开发实战(十四)-专注页面待办选择优化本文将介绍如何修复专注页面待办任务只显示5条的BUG并优化弹窗交互体验。一、问题分析1.1 问题现象┌─────────────────────────────────────┐ │ 选择待办任务 │ ├─────────────────────────────────────┤ │ ┌─────────────────────────────┐ │ │ │ ☐ 学习ArkTS基础 │ │ │ │ ☐ 开发及时做APP │ │ │ │ ☐ 写博客文档 │ │ │ │ ☐ 代码优化 │ │ │ │ ☐ 测试功能 │ │ │ └─────────────────────────────┘ │ ← 只显示5条 │ │ │ 实际有10条待办但看不到 │ └─────────────────────────────────────┘1.2 问题原因问题分析 ┌─────────────────────────────────────┐ │ bindSheet height: 400 │ │ ↓ │ │ 弹窗高度固定为400vp │ │ ↓ │ │ List组件可滚动但弹窗高度不够 │ │ ↓ │ │ ❌ 用户无法看到更多待办 │ └─────────────────────────────────────┘二、bindSheet弹窗详解2.1 bindSheet基本用法Componentstruct MyComponent{StateshowSheet:booleanfalse;build(){Column(){Button(打开弹窗).onClick((){this.showSheettrue;})}.bindSheet($$this.showSheet,this.MySheet(),{height:400,// 弹窗高度backgroundColor:Color.White,// 背景色dragBar:true,// 拖拽栏onWillDismiss:(){// 关闭回调this.showSheetfalse;}})}BuilderMySheet(){Column(){Text(弹窗内容)}}}2.2 弹窗高度设置属性说明推荐值height弹窗高度300-600vpdragBar是否显示拖拽栏truebackgroundColor背景颜色根据主题2.3 弹窗高度计算┌─────────────────────────────────────┐ │ 弹窗高度计算 │ ├─────────────────────────────────────┤ │ 标题栏高度约50vp │ │ 列表项高度约60vp │ │ 内边距约30vp │ │ ───────────────────── │ │ 显示5条50 60×5 30 380vp │ │ 显示8条50 60×8 30 560vp │ │ 显示10条50 60×10 30 680vp │ └─────────────────────────────────────┘三、解决方案3.1 修改前代码.bindSheet($$this.showTodoPicker,this.TodoPickerSheet(),{height:400,// ❌ 高度不够backgroundColor:this.isDarkMode?#2D2D2D:Color.White,dragBar:true,onWillDismiss:(){this.showTodoPickerfalse;}})3.2 修改后代码.bindSheet($$this.showTodoPicker,this.TodoPickerSheet(),{height:500,// ✅ 增加高度backgroundColor:this.isDarkMode?#2D2D2D:Color.White,dragBar:true,onWillDismiss:(){this.showTodoPickerfalse;}})3.3 弹窗内容优化BuilderTodoPickerSheet(){Column(){// 标题栏Row(){Text(选择待办任务).fontSize(20).fontWeight(FontWeight.Bold)Blank()Button(取消).onClick((){this.showTodoPickerfalse;})}.width(100%).padding(15)Divider()// 待办列表 - 可滚动List({space:10}){ForEach(this.todoList,(todo:TodoItem){ListItem(){this.TodoItemCard(todo)}},(todo:TodoItem)todo.id.toString())}.width(100%).layoutWeight(1)// 占满剩余空间.padding(15)}.width(100%).height(100%)}四、交互体验优化4.1 拖拽栏功能┌─────────────────────────────────────┐ │ 拖拽栏交互 │ ├─────────────────────────────────────┤ │ ┌─────────────────────────────┐ │ │ │ ═══════ │ │ ← 拖拽栏可拖动 │ │ │ │ │ │ 选择待办任务 │ │ │ │ ───────────── │ │ │ │ ☐ 待办1 │ │ │ │ ☐ 待办2 │ │ │ │ ... │ │ │ └─────────────────────────────┘ │ │ │ │ 用户可以 │ │ - 向上拖动展开弹窗 │ │ - 向下拖动收起弹窗 │ │ - 拖到底部关闭弹窗 │ └─────────────────────────────────────┘4.2 列表滚动优化List({space:10}){ForEach(this.todoList,(todo:TodoItem){ListItem(){this.TodoItemCard(todo)}})}.width(100%).layoutWeight(1).edgeEffect(EdgeEffect.Spring)// ✅ 添加弹性滚动效果.nestedScroll({// ✅ 嵌套滚动支持scrollForward:NestedScrollMode.PARENT_FIRST,scrollBackward:NestedScrollMode.SELF_FIRST})4.3 空状态处理if(this.todoList.length0){// 空状态提示Column(){Text(暂无可选待办).fontSize(16).fontColor(#999999)Text(请先添加待办任务).fontSize(14).fontColor(#CCCCCC).margin({top:10})Button(去添加).margin({top:20}).onClick((){// 跳转到待办页面})}.width(100%).height(100%).justifyContent(FlexAlign.Center)}else{// 待办列表List(){...}}五、完整代码示例5.1 待办选择弹窗BuilderTodoPickerSheet(){Column(){// 标题栏Row(){Text(选择待办任务).fontSize(20).fontWeight(FontWeight.Bold).fontColor(this.isDarkMode?#FFFFFF:#333333)Blank()Button(取消).fontSize(14).fontColor(this.themeColors.primary).backgroundColor(Color.Transparent).onClick((){this.showTodoPickerfalse;})}.width(100%).padding({left:20,right:20,top:15,bottom:15})Divider().color(this.themeColors.border)// 待办列表if(this.todoList.length0){this.EmptyState()}else{List({space:10}){ForEach(this.todoList,(todo:TodoItem){ListItem(){this.TodoItemCard(todo)}},(todo:TodoItem)todo.id.toString())}.width(100%).layoutWeight(1).padding({left:15,right:15,top:10,bottom:10})}}.width(100%).height(100%).backgroundColor(this.isDarkMode?#2D2D2D:#F5F5F5)}5.2 待办卡片BuilderTodoItemCard(todo:TodoItem){Row(){// 番茄钟图标Text().fontSize(24)// 待办信息Column(){Text(todo.text).fontSize(16).fontColor(this.isDarkMode?#FFFFFF:#333333).maxLines(1).textOverflow({overflow:TextOverflow.Ellipsis})if(todo.pomodoroCount0){Text(已完成${todo.pomodoroCount}个番茄钟).fontSize(12).fontColor(this.isDarkMode?#AAAAAA:#999999).margin({top:4})}}.layoutWeight(1).alignItems(HorizontalAlign.Start).margin({left:12})// 选择图标if(this.currentTodo?.idtodo.id){Text(✓).fontSize(20).fontColor(this.themeColors.primary)}}.width(100%).padding(15).backgroundColor(this.isDarkMode?#3D3D3D:#FFFFFF).borderRadius(12).onClick((){this.currentTodotodo;this.showTodoPickerfalse;})}六、总结本文修复了专注页面待办选择只显示5条的问题核心要点问题原因弹窗高度固定为400vp不够显示更多内容解决方案增加弹窗高度到500vp优化建议添加拖拽栏、滚动效果、空状态处理

相关新闻

嵌入式应届生求职指南:从0项目经验到实战能力构建

嵌入式应届生求职指南:从0项目经验到实战能力构建

最近在嵌入式技术交流群中,经常看到应届生同学提问:"0项目经验找工作,包装简历靠谱吗?" 这确实是一个很现实的问题。作为从嵌入式开发一路走过来的技术人,我理解大家在求职季的焦虑,但更想从行业…

2026/7/19 2:31:26阅读更多 →
Anthropic发现语言模型J-space机制:AI思维可解释性与安全监控新突破

Anthropic发现语言模型J-space机制:AI思维可解释性与安全监控新突破

Anthropic最新研究发现,语言模型内部存在一个类似人类"全局工作空间"的机制,他们称之为J-space。这个发现不仅改变了我们对大语言模型工作原理的理解,更为模型可解释性和安全性监控提供了全新工具。这项研究基于Anthropic团队开发的…

2026/7/19 2:31:26阅读更多 →
STM32开发三件套:sys.c/delay.c/usart.c深度解析

STM32开发三件套:sys.c/delay.c/usart.c深度解析

1. STM32开发中的核心三件套:sys.c/delay.c/usart.c深度解析在STM32嵌入式开发领域,有三个基础文件几乎出现在每个工程中——sys.c、delay.c和usart.c。这三个文件构成了STM32开发的"铁三角",承担着系统初始化、精确延时和串口通信…

2026/7/19 2:31:26阅读更多 →
知识库主流分片策略

知识库主流分片策略

1、概述将大文件存入知识库,主流的分片策略大致可以分为五类,它们分别适用于不同的文档类型和业务需求。核心思路是在块的大小、语义的完整性和计算成本之间找到平衡点。2、分片策略下表整理了这几类策略的核心原理、优缺点和典型应用场景,可…

2026/7/19 5:07:40阅读更多 →
时间序列分类变量动态编码:解决静态编码导致的模型失灵

时间序列分类变量动态编码:解决静态编码导致的模型失灵

1. 项目概述:为什么时间序列里的分类变量不能“一码了之”你有没有遇到过这样的情况:模型在训练集上效果不错,但一到真实业务场景里,预测就突然“失灵”?比如零售销量预测,上周刚上线的模型,这周…

2026/7/19 5:07:40阅读更多 →
企业数据分类分级操作指南:合规与安全治理实践

企业数据分类分级操作指南:合规与安全治理实践

这次我们来看企业数据分类分级这个关键的数据治理环节。随着《数据安全法》《个人信息保护法》等法规的实施,企业必须建立科学的数据分类分级体系来满足合规要求。这个操作指引将帮助企业系统化地完成数据资产梳理、分类标准制定、分级保护措施落地等核心工作。数据…

2026/7/19 5:07:40阅读更多 →
DM9000以太网控制器原理与WinCE5.0驱动开发详解

DM9000以太网控制器原理与WinCE5.0驱动开发详解

1. DM9000网络控制器基础认知DM9000是一款高度集成的以太网控制器芯片,广泛应用于嵌入式系统中。作为一款10/100M自适应的物理层芯片,它通过简单的总线接口与主控芯片连接,特别适合在资源受限的嵌入式环境中使用。在WinCE5.0这类嵌入式操作系…

2026/7/19 5:07:40阅读更多 →
鸿蒙 ArkTS 实战:Book Summary Card 从智能草稿到保存闭环完整解析

鸿蒙 ArkTS 实战:Book Summary Card 从智能草稿到保存闭环完整解析

鸿蒙 ArkTS 实战:Book Summary Card 从智能草稿到保存闭环完整解析 前言 Book Summary Card 是一个面向 读书总结卡片 的鸿蒙 ArkTS 单页工具。它将主题输入、数量统计、提示备注、智能模式和保存状态组织在同一个移动端页面中。 项目服务于 读者根据摘录生成书籍…

2026/7/19 5:07:40阅读更多 →
为什么说“稳,就是最大的冒险”,工作怎么选-永远不要放弃“离开的能力”? 风险和机会并存-在风险中的

为什么说“稳,就是最大的冒险”,工作怎么选-永远不要放弃“离开的能力”? 风险和机会并存-在风险中的

怎么选:体制内的“稳”和私企的“险”,全都是表层假象 真正的代价和收益,都藏在水面之下。 一、先拆穿两个最常见的认知误区 误区1:公务员/事业编=绝对稳定,一劳永逸 很多人考公的底层逻辑是“进去了就一辈子无忧”,这是典型的把“阶段性稳定”当成了“永久安全”。 …

2026/7/19 5:05:39阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:01:04阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:01:04阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/18 22:49:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →