鸿蒙HarmonyOS小项目开发---禅定空间(终篇)

文章目录


章前总结

在前面的三章内容,我们建立了实例、顶部导航栏、主界面、新增界面,接下来我们将会对前面的界面代码细节需要进行处理,并新建时间管理界面用于控制活动。

代码细节处理

获取数据处理

当在新增界面输入数据时,前面讲了可以通过跳转界面时通过params进行向目标页面传递信息

新增界面“确定”按钮下展示代码:

 Button('确定')
            .onClick(() => {
              router.pushUrl({
                url: 'pages/Index',
                params: { name: this.name, time: this.time }
              })
            })

这里通过params传递了this.namethis.time,也就是讲输入的活动名称和活动时间传递给Index主页面。并在主界面中进行获取

@State params:any = router.getParams()

由于router.getParams()获取的为Object对象,所以要通过any型进行获取。

  • any 是一种类型,表示可以赋予任何值的类型。使用 any 类型可以绕过TypeScript的类型检查,这在某些情况下可以提供便利,但过度使用 any 会失去TypeScript提供的类型安全优势。

由于主界面中是通过数组进行遍历输出数据,所以需要将新增信息添加到数组中,但是如果在新增界面进行向数组增加数据,在跳转后就无法进行增加了,所以需要和遍历打印数组一起的主界面进行新增数据,还需要通过介质进行触发新增数组数据,所以新建“刷新”当做介质新增数据,并将传递的数据应用this.params.name|this.params.time。

 Text('刷新')
            .fontSize(20)
            .margin({ top: 10 })
            .fontColor('#fff')
            .onClick(() => {
              // 点击刷新时,向task数组添加新任务
              this.task.push(new TaskInfo(this.params.name, this.params.time));
            })

List()遍历统一类型时也是同样的原理,跳转到时间管理界面,并将时间进行传递。

.onClick(() => {
                        // 点击图标时,跳转到任务详情页面
                        router.pushUrl({
                          url: 'pages/ShowPage',
                          params: { time: tasks.time }
                        },
                          router.RouterMode.Single,
                          err => {
                            if (err) {
                              console.log(`路由失败,errCode: ${err.code} errMsg: ${err.message}`)
                            }
                          })
                      })

时间管理界面及功能

布局及倒计时功能

当在主界面进行点击小闹钟图标后,就会跳转到时间管理主要是通过TextTimer组件来实现倒计时效果,TextTimer组件拥有正计时和倒计时两个功能,在这里选择倒计时模式,设置倒计时参数、格式和控制器,通过控制器控制时间的开始、暂停、结束。

  • 需要首先创建TextTimerController实例,用于控制文本倒计时 textTimerController: TextTimerController = new TextTimerController()。

  • TextTimer: 这可能是一个自定义的定时器组件,用于显示倒计时。

  • isCountDown: true: 表示这是一个倒计时模式。

  • count: 设置倒计时的总时间,以毫秒为单位的时间值,60000毫秒为1秒。

  • controller: this.textTimerController: 传入一个控制器对象,可能用于控制定时器的开始、停止等行为。

  • .format(): 设置倒计时的显示格式。

  • 启动倒计时 this.textTimerController.start()

  • 暂停倒计时 this.textTimerController.pause()

  • 重置倒计时 this.textTimerController.reset()

需要提前对倒计时显示格式进行设计

@State format: string = 'mm:ss'

如下代码:

 Text('禅定空间')
        .fontSize(30)
        .fontWeight(FontWeight.Bold)
        .margin({top: 20, right: 150})
      // 创建TextTimer组件,设置倒计时参数、格式和控制器
      TextTimer({ isCountDown: true, count: this.params.time * 60000, controller: this.textTimerController })
        .format(this.format) // 设置倒计时格式
        .fontColor(Color.Black) // 设置字体颜色
        .fontSize(100) // 设置字体大小
        .onTimer((utc: number, elapsed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值