黑马健康项目(七)食物列表页

食物列表页

一准备阶段:

我们这部分要完成的内容是通过食物记录列表的加号跳转到的另一个页面,食物列表页面

这一页面就是两部分一个顶部的导航条和下面的一个tabs组件

导航条的内容就是一个Row容器里一个左端的返回image和右面的text

tabs组件里是上部的导航栏tabBar和下面的TabContent

这是前期的准备构思

二代码实现:

因为这是一个新的页面,所以我们要重新建一个ItemIndex的页面

build() {
    Column() {
      // 1.头部导航
      this.Header()
      // 2.列表
      ItemList()
        .layoutWeight(1)
   
    }
    .width('100%')
    .height('100%')
  }

首先是一个头部导航,那我们就建一个Header的组件

 @Builder Header() {
    Row() {
      Image($r('app.media.ic_public_back'))
        .width(24)
        .onClick(() => router.back())
      Blank()
      Text(this.type.name).fontSize(18).fontWeight(CommonConstants.FONT_WEIGHT_600)
    }
    .width(CommonConstants.THOUSANDTH_940)
    .height(32)
  }
}

.onClick(() => router.back()) 通过点击Image可以返回上一页面

然后是列表

列表这一部分和之间record一样我们要新建一个item的文件夹用来存放item有关的组件

写一个ItemList:

@Component
export default struct ItemList {
  

  build() {
    Tabs() {
      TabContent() {
        this.TabContentBuilder(ItemModel.list(this.isFood))
      }
      .tabBar('全部')

     
    }
    .width(CommonConstants.THOUSANDTH_940)
    .height('100%')
    .barMode(BarMode.Scrollable)
  }
 
 

因为列表内每一页面的内容都是类似的所以我们把列表内容用一个Builder来封装

@Builder TabContentBuilder(items: RecordItem[]) {
  List({ space: CommonConstants.SPACE_10 }) {
    ForEach(items, (item: RecordItem) => {
      ListItem() {
        Row({ space: CommonConstants.SPACE_6 }) {
          Image(item.image).width(50)
          Column({ space: CommonConstants.SPACE_4 }) {
            Text(item.name).fontWeight(CommonConstants.FONT_WEIGHT_500)
            Text(`${item.calorie}千卡/${item.unit}`).fontSize(14).fontColor($r('app.color.light_gray'))
          }.alignItems(HorizontalAlign.Start)

          Blank()
          Image($r('app.media.ic_public_add_norm_filled'))
            .width(18)
            .fillColor($r('app.color.primary_color'))
        }
        .width('100%')
        .padding(CommonConstants.SPACE_6)
      }
      .onClick(() => this.showPanel(item))
    })
  }
  .width('100%')
  .height('100%')
}

这样就可以简化代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值