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')
  }
}
相关推荐
贾伟康5 小时前
【知律|08】HarmonyOS ArkTS 语音阅读实战:管理法条朗读状态和中断恢复
生命周期·harmonyos·arkts·语音合成·arkui
贾伟康1 天前
【知律|06】HarmonyOS ArkTS 法律分类实战:让民法、劳动、消费等入口可维护
harmonyos·arkts·arkui·分类设计·多设备
贾伟康2 天前
【华夏二十四节气|07】HarmonyOS 6.0.2(22) ArkTS 节气搜索实战:多字段匹配与四态闭环
移动开发·harmonyos·arkts·arkui·本地搜索
贾伟康2 天前
【万能转换器|18】HarmonyOS ArkTS 权限与隐私实战:让 module.json5、功能说明和拒绝路径一致
移动开发·harmonyos·arkts·权限管理·隐私合规
贾伟康2 天前
【万能转换器|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·移动开发·harmonyos·arkts·回归测试
贾伟康3 天前
【万能转换器|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
移动开发·harmonyos·arkts·appgallery·应用发布
贾伟康3 天前
【知律|03】HarmonyOS ArkTS 普法练习实战:提交答案后同步统计与下一题
harmonyos·arkts·本地存储·状态管理·arkui
风华圆舞6 天前
HarmonyOS 自定义绘制实战 —— 用 ArkGraphics2D 画一个会卷曲翻动的页面网格
harmonyos·arkts·drawing·drawvertices·翻页卷曲·有限差分法线
看谷秀11 天前
arkts- 6 手势/沉浸式/深浅色/性能/组件补充/访问/js交互/通知/Native交互
前端·arkts
nullregedit11 天前
HarmonyOS 弦乐调音器开发实战 03:参考音、调音历史与 AppStorage 如何形成闭环
harmonyos·arkts·appstorage·preferences·audiorenderer