HarmonyOS6 - 鸿蒙ArkTS待办清单实战案例

HarmonyOS6 - 鸿蒙ArkTS待办清单实战案例

1. 效果图

列出待办事项,前面有一个是否完成的图标标识当前事项是否已完成,如果已完成则为勾选状态切文字灰色展示带有删除线,如果为未完成状态,则为未勾选状态,文字是黑色显示无删除线

2. 代码

js 复制代码
class ToDoModel {
  index: number;
  content: string;

  constructor(index: number, content: string) {
    this.index = index;
    this.content = content;
  }
}

/**
 * Author: 波波老师(vx:javabobo0513)
 * Desc: 待办列表
 */
@Entry
@Component
struct ToDoListPage {
  @State message: string = '待办列表';
  //待办事项数据集合
  @State dataList: Array<ToDoModel> = [
    new ToDoModel(1, '取快递'),
    new ToDoModel(2, '健身'),
    new ToDoModel(3, '图书馆还书'),
    new ToDoModel(4, '小米4S店提车'),
    new ToDoModel(5, '办理交房手续'),
  ]

  build() {
    Column() {
      Text(this.message)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)

      ForEach(this.dataList, (item: ToDoModel) => {
        ToDoItem({ content: item.content })
      }, (item: ToDoModel) => JSON.stringify(item))
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#ffffff') // 页面背景颜色
  }
}


@Component
struct ToDoItem {
  private content?: string; //具体的待办项的内容
  @State isComplete: boolean = false; //是否完成

  build() {
    Row() {
      //if条件渲染,替换图标效果
      if (this.isComplete) {
        this.labelIcon($r('app.media.ic_ok'));
      } else {
        this.labelIcon($r('app.media.ic_default'));
      }
      //每一条待办事项,通过opacity属性设置虚化效果,decoration属性设置删除线效果
      Text(this.content)
        .fontSize('20fp')
        .fontWeight(500)
        .opacity(this.isComplete ? 0.4 : 1)
        .decoration({ type: this.isComplete ? TextDecorationType.LineThrough : TextDecorationType.None })
    }
    .borderRadius(24)
    .backgroundColor('#ffffff')
    .width('95%')
    .height('64vp')
    .onClick(() => {
      this.isComplete = !this.isComplete;
    })
  }

  //抽离"是否完成按钮"的子组件,方便复用
  @Builder
  labelIcon(icon: Resource) {
    Image(icon)
      .width('28vp')
      .height('28vp')
      .margin('20vp')
  }
}
相关推荐
月上柳青2 天前
OpenHarmony 蓝牙 (BT) RTL8822cs 适配
鸿蒙系统
人间打气筒(Ada)3 天前
「码动四季·开源同行」HarmonyOS应用开发:鸿蒙系统概述
华为·harmonyos·deveco studio·鸿蒙开发·鸿蒙开发入门
世人万千丶4 天前
开源鸿蒙跨平台深度解析:Flutter Pigeon 跨平台官方示例适配全流程与底层故障溯源
学习·flutter·华为·开源·harmonyos·鸿蒙系统
梁山好汉(Ls_man)5 天前
鸿蒙_组件内和组件外使用@Builder自定义构建函数的区别
华为·harmonyos·arkts·鸿蒙·arkui
梁山好汉(Ls_man)5 天前
鸿蒙_ArkUI自定义组件常用的三组状态装饰器
华为·harmonyos·arkts·鸿蒙·arkui
UnicornDev6 天前
【HarmonyOS 6】时间管理APP:时光重塑页面布局设计
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
Industio_触觉智能8 天前
开源鸿蒙赋能水务智能化,IPC3528水务鸿蒙网关
鸿蒙系统·openharmony·rk3568·开源鸿蒙·工控机·鸿蒙水务·水务鸿蒙
wei_shuo9 天前
最佳实践 - 鸿蒙应用架构设计进阶:基于「百得知识库」ArkTS 的声明式 UI 与响应式状态管理实现路径
arkts·鸿蒙
高心星9 天前
鸿蒙6.0应用开发——模块化设计选型:HAP、HAR、HSP?
鸿蒙系统·har·hsp·技术选型·hap·harmonyos6.0·鸿蒙模块化设计
~央千澈~9 天前
《2026鸿蒙NEXT纯血开发与AI辅助》第三章:DevEco Studio 整体功能使用详解以及各个助手以及核心使用方法-卓伊凡
人工智能·鸿蒙开发·鸿蒙next