鸿蒙期末作业记录4(图书详细页面)

前言

        上次写到点击图书后,会将图书的信息通过页面路由传递到图书详细页面,该页面再对拿到的信息进行页面渲染,这期就记这个。

页面基本构建

页面的基本组成

这个页面组成很简洁,页面构建上面没什么问题,就是最外层是一个Row容器,里面包括了图片、column容器(包括两个Text文本),再就是Row组件(三个Button组件)

页面路由接收参数

  Img: string = router.getParams()?.['Img'];
  @State Name: string = router.getParams()?.['Name'];
  @State Author: string = router.getParams()?.['Author'];

没注意到的点       

 其实这里我写的时候有问题,我在Img前面前面加@State报错,然后我才想起来@State不能修饰Image的类型,它支持的类型只有Object、class、string、number、boolean、enum类型。

这个页面没什么特别困难的地方,只需要保证其他页面传参正确就好啦

与其他页面的联系

        然后我在这个收藏本文的地方写了点击事件,点击之后会页面路由顺便传参给书架页面(其实这样实现根本不现实,但是这是我能想到比较丝滑的连接方式了🥺),然后会把这个信息传给数据库(是的我终于连上数据库了😭),数据库会在再次登录时调用写的我写的查询功能,然后得到的数组内容进行渲染就会在书架上啦

然后这是该页面的代码

import router from '@ohos.router';
import TaskModel from '../DateBase/TaskModel'
@Entry
@Component
struct BookDetailPage {

  Img: string = router.getParams()?.['Img'];
  @State Name: string = router.getParams()?.['Name'];
  @State Author: string = router.getParams()?.['Author'];

  build() {
    Row() {
      Column() {
        Image(this.Img)
          .height(140)
          .margin({ top: 10,bottom:10})
        Column() {
          Text(this.Name)
          Text(this.Author)
            .margin({ top: 60 })
        }
        .margin({bottom:10})
        Row({space:10}){
          Button('批量下载')
            .type(ButtonType.Normal)
            .backgroundColor('#f4f4f4')
            .fontColor('#ff686869')

          Button('立即阅读')
            .type(ButtonType.Normal)
            .backgroundColor('#f4f4f4')
            .fontColor('#ff686869')

          Button('收藏本文')
            .type(ButtonType.Normal)
            .fontColor('#ff686869')
            .backgroundColor('#f4f4f4')
            .onClick(()=>{
              router.pushUrl({
                url:'pages/MainPage',
                params: {
                  Img: this.Img,
                  Name:this.Name,
                  Author:this.Author
                }
              })
              TaskModel.addTask(this.Img,this.Name,this.Author)
            })
        }
        .margin({top:20})
      }
      .width('100%')
      .height(300)
      .borderRadius(10)
      .backgroundColor(Color.White)
    }
    .padding(10)
    .height('100%')
    .width('100%')
  }
}

        我在”收藏本文“的Button组件上写了点击事件,包括了页面路由和数据库的插入操作,就实现了这个页面的大致功能,其实我数据库连接的时候废了很大功夫,而且有不足的是,只有最后一个按钮实现了点击事件,然后”批量下载“、”立即阅读“等都没有实现功能,有大佬知道怎么可以实现真正的阅读和下载功能吗,求指点。

Bug

        我记得写的时候页面跳转老是报错,大概就是can't find page(这个图是其他页面路由报错,跟我说的问题是同一个错,所以就用这个图代替了)

其实是忘记在resources文件下profile的main_pages.json文件下添加要转跳的目标页面的src了

总结

连上了数据库感觉是最大的收获

我好菜

项目开发好难

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值