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')
  }
}
相关推荐
浮芷.1 小时前
鸿蒙HarmonyOS 6.1新特性之沉浸式光感效果实现过程中的各类问题解决-鸿蒙PC版(一)
华为·harmonyos·鸿蒙·鸿蒙系统
YM52e9 小时前
鸿蒙PC ArkTS 死亡轮循深度解析与解决方案
学习·华为·harmonyos·鸿蒙·鸿蒙系统
浮芷.9 小时前
HarmonyOS 6.1 沉浸式光感效果-黑色光感实现效果与过程问题解决(二)
华为·harmonyos·鸿蒙·鸿蒙系统
全栈若城1 天前
HarmonyOS ArkWeb 系列之文本选中菜单定制:editMenuOptions 深度解析
arkts·arkweb·harmonyos6·editmenuoptions·textmenuitem
TrisighT1 天前
ArkTS 组件传对象还是拆属性?我测了帧率,结果和直觉反着来
harmonyos·arkts
YM52e2 天前
男孩子在外自我保护指南——用鸿蒙 ArkTS 构建交互式安全教育应用
学习·安全·华为·harmonyos·鸿蒙·鸿蒙系统
全栈若城2 天前
HarmonyOS AppUtil 应用配置控制:颜色模式/灰度/字体/语言/键盘避让详解
华为·harmonyos·arkts·harmonyos6·键盘避让·字体缩放
AI_零食2 天前
HarmonyOS ArkTS 设计系统构建实战指南
学习·华为·harmonyos·鸿蒙·鸿蒙系统
AI_零食2 天前
HarmonyOS ArkTS 常用工具函数实现与应用详解
华为·开源·harmonyos·鸿蒙·鸿蒙系统
AI_零食2 天前
HarmonyOS 表单验证机制深度解析与实践
学习·华为·harmonyos·鸿蒙·鸿蒙系统