及时做APP开发实战(十四)-专注页面待办选择优化

发布时间:2026/10/30 19:16:25

及时做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优化建议添加拖拽栏、滚动效果、空状态处理
延伸阅读

更多相关文章

2026/10/22 22:18:49

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

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

2026/10/27 15:13:04

AM62L DTHE_V2 SHA引擎寄存器详解:从硬件加速原理到安全驱动实践

1. 项目概述与核心价值在嵌入式系统,尤其是对安全有严苛要求的物联网终端、汽车电子或工业控制器中,实现高效且可靠的数据完整性校验与身份认证是基础需求。SHA系列哈希算法和HMAC(基于哈希的消息认证码)是达成这一目标的基石算法…

2026/10/27 12:08:24

1990-2025年上市公司数据大全

数据概览本数据库整合了中国A股上市公司的多维度信息,涵盖公司基本信息、股权性质与实际控制人、行业分类、地理信息、公司治理、内部控制、财务指标、研发创新、专利数据、税费信息、EVA经济增加值等多个研究视角,总计1465个变量,为实证研究…

2026/10/30 19:16:18

kernel-aodv_v2.2.2 内核态 AODV 编译、调优与避坑指南

简介:kernel-aodv_v2.2.2 是 Linux 内核环境下 AODV 按需距离矢量路由协议的实现源码包,面向具备一定 Linux 内核基础、从事无线自组织网络(Ad Hoc)研究与开发的工程师和高校师生,用于理解并部署无基础设施网络中的路由…

2026/10/30 19:16:18

QuickPCB2005终版:Win7/Win10离线抄板实战指南

简介:本资源是专为电子工程师及硬件逆向学习者提供的QuickPCB2005终版抄板软件,适配Windows 10/7系统,聚焦电路板图像识别与复刻需求,解决老旧PCB无源文件时的逆向设计难题。压缩包共27个文件,含核心可执行文件QuickPc…

2026/10/30 19:16:18

ARM Compiler 5.06实用指南:armcc与Keil工程迁移避坑要点

简介:ARM Compiler 5.06 是为 MDK(Keil Microcontroller Development Kit)定制的经典编译工具链,主要面向需要使用旧版本编译器维护或移植 ARM 工程的嵌入式工程师,尤其适合处理那些在更新版本下无法正常编译的项目。压…

2026/10/30 19:16:18

【纯免费分享】UG 二次开发救星:NXopen API 中文帮助文档

【纯免费分享】UG 二次开发救星:NXopen API 中文帮助文档 【免费下载链接】NXopenAPI中文帮助文档 本仓库提供了一份详细的NXopen API中文帮助文档,适用于UG(Unigraphics)软件的二次开发。该文档涵盖了NX OPEN C/C的开发内容&…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/30 0:00:46

NCP1342高频准谐振反激控制器:从设计约束到验收的完整方案

简介:NCP1342 高频准谐振反激控制器应用介绍译文文档,面向电源设计工程师、硬件研发人员及开关电源学习者,帮助读者跨越英文原版资料的语言门槛,系统理解这款高集成度 QR Flyback 控制器的设计要点。文档围绕芯片核心特性展开&…

2026/10/30 0:00:46

NCP1342准谐振反激电源设计:从选型到验收的全流程解析

简介:这份文档面向电源设计工程师与开关电源学习者,系统梳理NCP1342高频准谐振反激控制器的应用要点,帮助读者快速理解这款高集成度离线电源变换器控制芯片的工作机制与设计方法。内容涵盖芯片核心特性、引脚功能定义、电气特性参数表、最大额…

2026/10/30 0:00:46

Web系统自动登出机制设计与实现全解析

1. 系统自动登出机制的设计初衷在各类Web应用和后台管理系统中,自动登出功能早已成为标配。这个看似简单的功能背后,实际上涉及用户安全、资源管理和体验优化的多重考量。作为从业十多年的老开发,我见过太多因为登出逻辑设计不当导致的安全事…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑