效果图如下:
代码如下:
@Entry
@Component
struct Index {
@State userInput:string = ''; // 用户输入
@State toDoList:string[] = ['吃饭','睡觉','打豆豆']; // 待办事项的数组
build() {
Column(){
// 标题
Row(){
Text('TodoList')
.fontSize(40)
}
.margin({top:100})
// 输入框与提交按钮
Row(){
// 输入框
TextInput({text:this.userInput,placeholder:'请输入代办项:'})
.width(220)
.height(50)
.fontSize(20)
.onChange((newValue:string)=>{this.userInput = newValue})
// 提交按钮
Button('提交')
.width(80)
.height(50)
.onClick(()=>{
// 提交至待办事项数组
this.toDoList.push(this.userInput)
// 清空用户输入
this.userInput = ''
})
}
.width('100%')
.height('10%')
.margin({top:30})
.backgroundColor(Color.White)
.justifyContent(FlexAlign.SpaceAround)
// 待办事项列表
List(){
if (this.toDoList.length) {
// 展示列表
ForEach(this.toDoList,(item:string,index:number)=>{
ListItem(){
Row(){
// 代办事项内容
Text(item)
.fontSize(25)
// 删除按钮
Button('删除')
.width(100)
.backgroundColor(Color.Red)
.fontColor(Color.White)
.onClick(()=>{
this.toDoList.splice(index,1)
})
}
.width('100%')
.justifyContent(FlexAlign.SpaceBetween)
}
.width('80%')
.height(50)
.margin({top:10})
},(item:string,index:number)=>item+index.toString())
} else {
// 数组为空,展示提示文字
ListItem(){
Text('暂无待办事项')
.fontSize(30)
}
.margin({top:30})
}
}
.width('100%')
.height('50%')
.alignListItem(ListItemAlign.Center)
.scrollBar(BarState.Auto)
}
.width('100%')
.height('100%')
}
}