ToB企服应用市场:ToB评测及商务社交产业平台
标题:
HarmonyOs ----使命统计案例
[打印本页]
作者:
钜形不锈钢水箱
时间:
2024-10-14 06:23
标题:
HarmonyOs ----使命统计案例
顶部样式计划
由图中可看出是,程度布局,整体为垂直布局
@Entry
@Component
struct Task_1 {
build() {
Column(){
Row(){
}
}
}
}
复制代码
2.填写内容
因为整体布局样式相同,用@styles 设置整体布局通用样式
因为数值会变化:用@State界说
外面圆圈也会变化,所以用Progress
第一个数值为:选中数值:finish
第二个数值为:总共数值:totall
//设置整体样式
@Styles function card_1(){
.width('95%')
.padding(20)
.backgroundColor(Color.White)
.borderRadius(15)
.shadow({radius:6,color:'#1F000000',offsetX:2,offsetY:4})
}
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
build() {
Column(){
Row(){
Text('任务进度:')
.fontSize(30)
.fontWeight(FontWeight.Bold)
Stack(){
Progress({value:this.finish,total:this.totall,type:ProgressType.Ring})
.width(100)
Row(){
Text(this.finish+'')
.fontSize(30)
.fontColor('#36D')
Text(' / '+this.totall)
.fontSize(30)
}
}
}
//引用自定义样式card_1
.card_1()
.justifyContent(FlexAlign.SpaceAround)
}
}
}
复制代码
设置按钮
设置按钮样式
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
build() {
Column(){
Row(){//顶部样式}
//设置按钮样式
Button('新增任务')
.width(140)
.margin({top:10})
}
}
}
复制代码
2.添加数组
task类中的id是静态变量,可以被task类中的所有对象共享
//创建task类
class task{
static id :number=1
name:string=`任务${task.id++}`
Boole:boolean=false
}
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
// 数组类型
@State task:task[]=[]
build() {
Column(){
Row(){//顶部样式}
Button('新增任务')
.width(140)
.margin({top:10})
}
}
}
复制代码
3.添加事故:点击按钮,随之数组增长(顶部totall变化)
push是增长一条新数组
this.task_1.push(new task_1()):只写 task_1():上面已经界说,就不用在写
数组总值增长,totall数值随之变化
//创建task类
class task_1{
static id :number=1
name:string=`任务${task_1.id++}`
Boole:boolean =false
}
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
// 数组类型
@State task_1:task_1[]=[]
build() {
Column(){
Row(){//顶部样式}
Button('新增任务')
.width(200)
.margin({top:10})
.onClick(()=>{
this.task_1.push(new task_1())
//totall数值是数组长度
this.totall=this.task_1.length
})
}
}
}
复制代码
添加内容
用ForEach循环数组:
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
// 数组类型
@State task_1:task_1[]=[]
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
ForEach(this.task_1,(item:task_1,index)=>{
Row(){
Text(item.name)
.fontSize(20)
}
})
}
}
}
复制代码
2.添加多选框
select(item.Boole):select是布尔值,Boole:上面在函数中被设布尔值
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
// 数组类型
@State task_1:task_1[]=[]
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
ForEach(this.task_1,(item:task_1,index)=>{
Row(){
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.Boole)
}
})
}
}
}
复制代码
设置样式
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
// 数组类型
@State task_1:task_1[]=[]
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
ForEach(this.task_1,(item:task_1,index)=>{
Row(){
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.Boole)
}
.card_1()
.justifyContent(FlexAlign.SpaceBetween)
})
}
}
}
复制代码
4.添加监听事故:监听task_1变化
onChange:如Checkbox类型变化,finish增长
@Entry
@Component
struct Task_1 {
@State finish:number=0
@State totall:number=0
// 数组类型
@State task_1:task_1[]=[]
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
ForEach(this.task_1,(item:task_1,index)=>{
Row(){
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.Boole)
.onChange(()=>{
this.finish=this.task_1.filter(item=>item.Boole).length
})
}
.card_1()
.justifyContent(FlexAlign.SpaceBetween)
})
}
}
}
复制代码
设置列表
在list,ListItem内添加数组
@Entry
@Component
struct Task_1 {
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
List(){
ForEach(this.task_1,(item:task_1,index)=>{
ListItem() {
Row() {
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.Boole)
}
.card_1()
.justifyContent(FlexAlign.SpaceBetween)
}
})
}
}
}
}
复制代码
设置样式
@Entry
@Component
struct Task_1 {
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
List({space:10}){
ForEach(this.task_1,(item:task_1,index)=>{
ListItem() {
Row() {
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.Boole)
}
.card_1()
.justifyContent(FlexAlign.SpaceBetween)
}
})
}
.layoutWeight(1)
.alignListItem(ListItemAlign.Center)
}
}
}
复制代码
设置左滑动,并删除该组数据
.swipeAction({end: this.DeleteButton(index) }):end后添加函数
用@Builder 创建函数
this.tasks.splice(index,1):splice删除index索引的一个数组
在同步一下totall,finish数据
@Entry
@Component
struct Task_1 {
build() {
Column(){
Row(){//顶部样式}
Button()//设置按钮样式
List({space:10}){
ForEach(this.task_1,(item:task_1,index)=>{
ListItem() {
Row() {
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.Boole)
}
.card_1()
.justifyContent(FlexAlign.SpaceBetween)
}
})
}
.layoutWeight(1)
.alignListItem(ListItemAlign.Center)
}
}
@Builder DeleteButton(index:number){
Button({type:ButtonType.Circle}){
//矢量图
Image('/Task/task_delete.svg')
//改变矢量图颜色
.fillColor(Color.White)
.width(50)
}
.width(80)
.margin(5)
.width(80)
.backgroundColor(Color.Red)
.onClick(()=>{
this.tasks.splice(index,1)
this.finishTask=this.tasks.filter(item=>item.finished).length
this.totallTask = this.tasks.length
})
}
复制代码
有什么不足恣意提,我下次改进!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4