【共创季稿事节】记事本应用开发:ArkTS 中编辑模式切换与文本处理
一、前言记事本Notepad是智能手机上使用频率最高的工具类应用之一。它虽然功能简单——记录、编辑、保存文本——但其背后涉及的视图模式和编辑模式之间的切换、文本内容的增删改、状态一致性维护等技术点是构建更复杂应用的重要基础。二、应用需求2.1 功能需求功能 说明笔记列表 以列表形式展示所有笔记标题/摘要添加笔记 通过输入框创建新笔记编辑笔记 点击编辑按钮进入编辑模式删除笔记 一键删除笔记保存笔记 将编辑内容保存到列表中2.2 模式设计本应用采用双模式设计Dual Mode Design┌──────────┐ 点击编辑 ┌──────────┐│ 浏览模式 │ ────────────────→ │ 编辑模式 ││ (列表视图) │ ←──────────────── │ (编辑视图) │└──────────┘ 保存/取消 └──────────┘这种双模式设计在移动应用中非常常见如联系人编辑、设置项修改等。三、核心状态设计3.1 状态变量State notes: string[] [‘初始笔记’]; // 笔记数组State currentNote: string ‘’; // 当前编辑中的文本State isEditing: boolean false; // 是否处于编辑状态State editIndex: number -1; // 正在编辑的笔记索引(-1新建)3.2 模式条件渲染在 build() 方法中通过 if (this.isEditing) 条件在两种模式间切换build() {Column() {// 标题栏if (this.isEditing) {// 编辑模式TextArea 保存/取消按钮} else {// 浏览模式笔记列表 添加按钮}}}这是 ArkTS 中条件渲染的标准写法。当 isEditing 为 true 时显示编辑界面为 false 时显示列表界面。四、文本输入组件详解4.1 TextInput vs TextArea组件 行数 适用场景TextInput 单行 短文本输入TextArea 多行 笔记/长文本在记事本应用中我们使用 TextArea 来提供足够的书写空间TextArea({placeholder: ‘输入笔记内容…’,text: this.currentNote}).height(150).backgroundColor(Color.White).borderRadius(8).onChange((v: string) {this.currentNote v;})4.2 输入防抖对于 onChange 回调如果存在后端存储或搜索等操作建议添加防抖Debounce处理。但在当前应用中我们将文本直接保存在 State 变量中无需防抖。五、编辑模式切换逻辑5.1 进入编辑Button(‘✏️’).onClick(() {this.currentNote note; // 加载笔记内容到编辑器this.editIndex idx; // 记录索引位置this.isEditing true; // 切换到编辑模式})三步操作加载内容 → 记录位置 → 切换模式。5.2 保存编辑Button(‘ 保存’).onClick(() {let txt this.currentNote.trim();if (txt) {if (this.editIndex 0) {this.notes[this.editIndex] txt; // 更新已有笔记} else {this.notes.push(txt); // 添加新笔记}}// 重置编辑状态this.isEditing false;this.currentNote ‘’;this.editIndex -1;})关键判断editIndex 0 表示编辑已有笔记否则为新建笔记。5.3 取消编辑Button(‘取消’).onClick(() {this.isEditing false;this.currentNote ‘’;this.editIndex -1;})取消编辑必须同时清除三个编辑状态变量否则下次进入编辑模式时可能残留上一次的索引或内容。六、条件渲染的性能考量在 ArkTS 中if/else 条件渲染会导致未被选中的分支在渲染树中完全不存在。这对于性能是有益的——因为编辑器只在需要时才创建和渲染。但需要注意每次切换模式都会触发组件的重新创建。如果编辑器组件非常复杂可以考虑使用 Visibility 属性进行显隐控制而非条件渲染。七、总结记事本应用的开发虽然简单但它引入了移动应用开发中一个非常重要的设计模式双模式切换。这种模式在 ArkTS 中可以通过 if/else 条件渲染轻松实现状态管理也遵循状态驱动视图的核心理念。记事本 待办清单的组合几乎可以覆盖信息管理类应用的全部基础需求。掌握了这两个应用你就已经可以上手开发很多实用的工具应用了。

相关新闻

【共创季稿事节】待办清单应用开发实战:ArkTS 列表渲染与状态管理深度解析

【共创季稿事节】待办清单应用开发实战:ArkTS 列表渲染与状态管理深度解析

一、引言 待办清单(Todo List)是前端开发领域的"Hello World",几乎所有现代前端框架的官方教程都会以它作为入门案例。这并非偶然——Todo List 虽小,却涵盖了前端开发中最核心的三大能力: 列表渲染&#xf…

2026/7/5 14:12:32阅读更多 →
C# 自定义特性(Attribute)+ 反射读取特性 +WinForm 自定义控件常用特性

C# 自定义特性(Attribute)+ 反射读取特性 +WinForm 自定义控件常用特性

一、核心概念1. 什么是特性特性(Attribute)是 标记代码元素的描述信息(类、方法、字段、属性)。作用:给代码附加额外元数据,编译时标记、运行时通过反射读取,实现扩展功能。系统自带特性&#x…

2026/7/5 14:12:32阅读更多 →
C++语言基础4:例程讲解(结合在QT的应用)

C++语言基础4:例程讲解(结合在QT的应用)

我们从最基础的语法、每个关键字 / 符号的含义、每一行的执行逻辑逐句拆解&#xff0c;全程用新手能理解的表述&#xff0c;你可以对着代码一行一行看。例程如下&#xff1a;void TemperatureBar::update_data(int base_address, const QVector<quint16> &value) {Q_…

2026/7/5 14:12:32阅读更多 →
SARSteer: Safeguarding Large Audio Language Models via Safe-Ablated Refusal Steering

SARSteer: Safeguarding Large Audio Language Models via Safe-Ablated Refusal Steering

文章核心总结与翻译 一、主要内容 本文聚焦大型音频语言模型(LALMs)的安全对齐问题,针对现有LLM和LVLM安全防御方法直接迁移至LALMs时存在的两大缺陷(音频输入下基于LLM的引导失效、基于提示的防御导致良性查询过度拒绝),提出了首个推理时防御框架SARSteer(Safe-Ablat…

2026/7/5 15:17:44阅读更多 →
Explainability of Large Language Models: Opportunities and Challenges toward Generating Trustwort...

Explainability of Large Language Models: Opportunities and Challenges toward Generating Trustwort...

文章核心总结与创新点 主要内容 文章聚焦大型语言模型(LLMs)的可解释性,围绕局部可解释性和机制可解释性两大核心方向展开。首先梳理了LLMs的发展背景与Transformer架构基础,系统综述了现有局部可解释性(如思维链推理、检索增强生成等)和机制可解释性(如注意力头分析、…

2026/7/5 15:17:44阅读更多 →
用optiland绘制光扇图

用optiland绘制光扇图

文章目录光扇图的基本概念测试RayFan光扇图的基本概念 Ray Fan即光扇图&#xff0c;是光学设计中用于分析一维截面上几何像差的核心工具。与点列图展示二维平面上的光斑分布不同&#xff0c;Ray Fan 将三维的光线追迹结果降维&#xff0c;通过二维曲线直观地展示横向像差&…

2026/7/5 15:17:44阅读更多 →
如何去除 AI 输出文本中带 *、# 的小技巧,选用 AI 导出鸭优化文档导出,结合行业数据根除多余格式符号困扰

如何去除 AI 输出文本中带 *、# 的小技巧,选用 AI 导出鸭优化文档导出,结合行业数据根除多余格式符号困扰

摘要 AI生成内容时常附带星号、井号等markdown标记符号&#xff0c;手动清理耗费大量办公时间。本文围绕去除特殊符号的实用技巧展开&#xff0c;结合市面五种主流文档导出方案横向测评&#xff0c;引用行业白皮书实测数据与业内专家观点&#xff0c;搭配用户实测反馈与问答科普…

2026/7/5 15:17:44阅读更多 →
P1634 禽兽的传染病

P1634 禽兽的传染病

题目背景mxj 的启发。题目描述禽兽患传染病了。一个禽兽会每轮传染 x 个禽兽。试问 n 轮传染后有多少禽兽被传染&#xff1f;输入格式两个非负整数 x 和 n。输出格式一个整数&#xff0c;即被传染的禽兽数。输入输出样例输入 #1复制10 2输出 #1复制121说明/提示保证 x,n 以及答…

2026/7/5 15:17:44阅读更多 →
AsrTools终极指南:5分钟学会高效语音转文字技巧

AsrTools终极指南:5分钟学会高效语音转文字技巧

AsrTools终极指南&#xff1a;5分钟学会高效语音转文字技巧 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text i…

2026/7/5 15:12:37阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述&#xff1a;从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目&#xff0c;叫 skills4/skills &#xff0c;它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景&#xff1a;一个旨在展示或教授某种技能的仓库&#xff0c;本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示&#xff1a;因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战&#xff1a;从“黑箱预测”到“可信推理”2026年6月&#xff0c;第7届机器学习与趋势国际会议&#xff08;MLT 2026&#xff09;将在悉尼召开。会议议程中&#xff0c;“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时&#xff0c;通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中&#xff0c;是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述&#xff1a;从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目&#xff0c;叫 skills4/skills &#xff0c;它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景&#xff1a;一个旨在展示或教授某种技能的仓库&#xff0c;本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示&#xff1a;因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战&#xff1a;从“黑箱预测”到“可信推理”2026年6月&#xff0c;第7届机器学习与趋势国际会议&#xff08;MLT 2026&#xff09;将在悉尼召开。会议议程中&#xff0c;“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时&#xff0c;通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中&#xff0c;是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

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

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

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

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

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

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

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/5 3:48:09阅读更多 →