首页 > 其他分享 >ArkTS待办列表清单【代码可执行】

ArkTS待办列表清单【代码可执行】

时间:2024-01-17 19:46:22浏览次数:28  
标签:ArkTS ItemComponent media isComplete width 待办 清单 TaskDataModel

共分为三个代码文件:

/*
定义APP中需要用到的模型 Models.ets
 */

export class TaskDataModel {
  private tasks: Array<string> = [
    "早起早读",
    "准备早餐",
    "阅读周易",
    "学习实践ArkTS",
    "玩游戏放松一下",
    "准备午饭",
    "午休",
    "刷剧一下午"
  ]

  getData():Array<string> {
    return this.tasks
  }
}

// new TaskDataModel()

 

/**
 * 每一项的一个组件  ItemComponent.ets
 */
import media from '@ohos.multimedia.media'

@Component
export default struct ItemComponent {

  private task_content:string // 代办任务的内容
  @State isComplete:boolean = false // 是否完成该任务的标记
  @Builder  // 构建函数
  createIcon(icon:Resource) {
    Image(icon)
      .width(28)
      .height(28)
      .objectFit(ImageFit.Contain)
      .margin(20)
  }

  build() { // 构建一个任务的UI界面
    Row() {
      // 第一个是图标
      if (this.isComplete) {
        this.createIcon($r('app.media.ic_ok'))
      }
      else {
        this.createIcon($r('app.media.ic_default'))
      }

      // 第二个是文本
      Text(this.task_content)
        .fontSize(20)
        .fontWeight(500)
        .decoration({type: this.isComplete ? TextDecorationType.LineThrough : TextDecorationType.None}) // 根据任务是否完成决定是否有删除线
        .opacity(this.isComplete ? 0.5 : 1) // 根据任务是否完成来设置透明度
    }
    .borderRadius(24)
    .backgroundColor(Color.White)
    .width('93%')
    .height(65)
    .onClick(() => {
      this.isComplete = !this.isComplete
    })
    
  }
}

 

 

/**
 * 构建入口的UI界面   Index.ets
 */

import {TaskDataModel} from './Models'
import ItemComponent from './ItemComponent'

@Entry
@Component
struct TaskListIndex {

  private totalData: Array<string> = [] // 待办列表中所有的数据

  aboutToAppear() { // 初始化数据
    this.totalData = new TaskDataModel().getData()
  }

  build() {
    Column({space: 6}) {
      Text('待办')
        .fontSize(28)
        .lineHeight(33)
        .fontWeight(FontWeight.Bold)
        .width('80%')
        .margin({
          top: 24,
          bottom: 12
        })
        .textAlign(TextAlign.Start)

      // 循环渲染
      ForEach(this.totalData, (item:string) => {
        ItemComponent({task_content: item})
      })
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#F1F3F5')
  }
}

 

效果图如下:

 

标签:ArkTS,ItemComponent,media,isComplete,width,待办,清单,TaskDataModel
From: https://www.cnblogs.com/zhzhang/p/17970875

相关文章

  • 鸿蒙ArkTs,重新配置签名(真机运行报错而控制台没有报错的解决方法)
     找到如下路径,删除该代码段,重新认证。 找到项目结构  重新配置签名 点击SignIn,会自动跳入华为官网,登录华为账号后,授权登录,弹出如下页面 再次回到IDE,会弹出如下页面,点击Agree同意   随后IDE会自动生成签名文件,点击OK后,会看到根目录的build-profile.json......
  • ArkTS的滑动加载案例
     /***ArkTS的滑动加载案例*///自定义文章类classArticle{publicid:numberpublictitle:stringpubliccontent:stringconstructor(id:number,title:string,content:string){this.id=idthis.title=titlethis.content=conten......
  • ArkTS之循环渲染案例
      /***ArkTS之循环渲染*/@ComponentstructMyChild{label:stringbuild(){Text(this.label).fontSize(30)}}@Entry@ComponentstructMyParent{@Statemy_array:Array<string>=['one','two','three......
  • 鸿蒙HarmonyO实战-ArkTS语言(状态管理)
    ......
  • 鸿蒙HarmonyOS实战-ArkTS语言(基本语法)
    ......
  • 初次上手接触ArkTs
    本文分享自华为云社区《学习ArtTs--初见ArkTs》,作者:Uncle_Tom。1.前言需要静态分析去检查一个语言,必须对这个语言有深刻的认识,才能有效的对这个语言进行有效的检查。我常说:“作为一个程序分析员需要比一般的程序员考虑的更多。通常程序员只要考虑在需求和结果之间建立一条......
  • ArkTS父子组件双向绑定案例
     /***父子组件双向互绑定*///自定义按钮的信息类型classButtonState{value:stringwidth:numberconstructor(value:string,width:number){this.value=valuethis.width=width}}@ComponentstructMyChildGreenButton{//拥有绿色......
  • ArkTS Prop组件使用案例
      /***Prop组件使用案例*/@ComponentstructMyChild{@Propage:number//状态变量privateincrease:number=1build(){Column(){if(this.age>=18){Text(`子组件中的age已经成年了:${this.age}`).height(80)......
  • SCA面面观 | 如何生成一份软件物料清单SBOM?
    由于网络安全挑战和不断变化的威胁环境,使得软件供应链安全成为了一个重要议题。特别是近年来,软件供应链的复杂性和全球化程度的提升,第三方软件的安全性和可追溯性变得越来越重要。为了应对这一挑战,从美国政府开始,各个国家开始积极推动软件供应链安全的相关政策和措施。美国陆续发布......
  • HarmonyOS (ArkTS)状态管理
    一、状态管理分为:页面级变量的状态管理  (主要用于单页面,同一个页面内不同组件之间的状态管理。)应用级变量的状态管理(主要用于多页面,同一个应用内,不同页面之间的状态管理。例如:A页面和B页面实现数据共享)1、页面级变量的状态管理@State、@Prop、@Link、@Provi......