《仿盒马》app开发技术分享-- 兑换列表展示(68)

简介: 上一节我们创建了积分相关的商品表,我们现在可以针对积分进行更多的操作了,我们首先添加了对应的数据到我们的云数据库中,这一节我们就要把我们存储的数据查询出来展示给用户

技术栈

Appgallery connect

开发准备

上一节我们创建了积分相关的商品表,我们现在可以针对积分进行更多的操作了,我们首先添加了对应的数据到我们的云数据库中,这一节我们就要把我们存储的数据查询出来展示给用户,数据展示到列表上方便用户去查看,这里我们的列表因为要展示的是商品类的内容,所以我们选择的组件是可以实现瀑布流的组件

功能分析

首先我们需要在进入页面后进行数据查询,数据查出后我们定义对应的集合,然后我们新建一个瀑布流组件,把数据传递进去,进行数据的展示,在引用组件的地方我们传递数据,这样就可以实现我们想要的内容了

代码实现

我们首先在进入页面后查询数据,要想在第一时间进行数据的查询,首先我们要选择一个生命周期函数我们在aboutToAppear中实现,实现数据查询之后我们先创建一个变量,定义一个数组对象,把查出来的数据赋给定义的数组对象,方便我们后续使用

@State listProduct:PointsProduct[]=[]
  async aboutToAppear(): Promise<void> {
   
    let databaseZone = cloudDatabase.zone('default');
    let condition = new cloudDatabase.DatabaseQuery(points_product);
    let listData = await databaseZone.query(condition);
    let json = JSON.stringify(listData)
    let data: PointsProduct[] = JSON.parse(json)
    this.listProduct = data
    hilog.error(0x0000, 'testTag', `Failed to query data, code: ${
   data}`);
  }

然后我们新建一个自定义组件,先定义好一条数据的样式,在这里我们使用@builder来创建一个组件,在其中插入url、name、说明等内容


  @Builder
  Item(item:PointsProduct){
   
    Column() {
   
      Image(item.url)
        .width('100%')
        .aspectRatio(1)
        .objectFit(ImageFit.Cover)
        .borderRadius({
   topLeft:10,topRight:10})

      Column() {
   
        Text(item.name)
          .fontSize(16)
          .fontColor('#333')
          .margin({
    bottom: 4 })

        Text(item.text_message)
          .fontSize(12)
          .fontColor('#666')
          .margin({
    bottom: 8 })




        Row() {
   
          Text(){
   
            Span("$")
              .fontColor(Color.Red)
              .fontSize(14)

            Span(String(item.points))
              .fontSize(16)
              .fontColor(Color.Red)
          }


          Blank()
          Column() {
   
            Image($r('app.media.cart'))
              .width(20)
              .height(20)
          }
          .justifyContent(FlexAlign.Center)
          .width(36)
          .height(36)
          .backgroundColor("#ff2bd2fa")
          .borderRadius(18)
        }
        .margin({
   top:10})
        .width('100%')
        .justifyContent(FlexAlign.SpaceBetween)



      }
      .alignItems(HorizontalAlign.Start)
      .padding(12)
    }
    .backgroundColor(Color.White)
    .borderRadius(12)
    .onClick(() => {
   

    })
  }

然后我们创建对应的布局,引入item


  build() {
   
    WaterFlow() {
   
      ForEach(this.goodsList, (item:PointsProduct, index) => {
   
        FlowItem() {
   
          this.Item(item)
        }
        .margin({
    bottom: 12 })
      })
    }
    .padding(10)
    .columnsTemplate('1fr 1fr')
    .columnsGap(12)
    .onAreaChange((oldVal, newVal) => {
   
      this.columns = newVal.width > 600 ? 2 : 1
    })
  }

实现之后我们引入组件,拿到创建的数组对象,放置到自定义组件中

  @State listProduct:PointsProduct[]=[]

 build() {
   
    Column() {
   
      CommonTopBar({
    title: "积分兑换", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true})
      ProductItem({
   goodsList:this.listProduct})

    }
    .backgroundColor(Color.White)
    .height('100%')
    .width('100%')
  }

到这里我们就实现了兑换列表的展示

相关文章
|
3月前
|
存储
《仿盒马》app开发技术分享-- 优惠券展示页(57)
上一节我们实现了优惠券的领取功能,并且在云端已经成功查询出优惠券信息,那么我们需要来实现一个优惠券展示的页面来向用户展示当前账号下的优惠券信息,辅助用户更好的去购买需要的商品,因为优惠券会有多种状态,在展示时也要注意不同状态的区分如何处理
97 9
|
3月前
《仿盒马》app开发技术分享-- 兑换商品确认揽收&待收货列表展示(78)
上一节我们实现了订单取消功能,实现了tabs切换时的数据刷新,实现了已取消订单的列表展示。这一节我们要实现揽收功能,并且实现待收货的列表展示功能
76 0
|
3月前
|
API 数据库
《仿盒马》app开发技术分享-- 我的积分页(63)
上一节我们实现了个人中心页面的业务逻辑优化,成功的在用户登陆退出状态下展示对应的组件内容,这一节我们来实现app中另外一个比较重要的模块---积分模块。
94 0
|
3月前
|
数据库
《仿盒马》app开发技术分享-- 优惠券逻辑优化(58)
我们已经实现了优惠券的领取和展示,现在已经趋近于一个完整的电商应用了,但是这时候问题又来了,我们领取完优惠券之后,我们的新用户优惠券模块依然存在,他并没有消失,既然我们是从云数据库中查询的数据,那么我们需要找到一个字段跟他对应起来,来实现新用户领券后关闭这个模块的展示,同时我们在未登录的时候他也要保持隐藏,登录后能实现优惠券的领取。然后在结算的时候得出有几张符合的券能用
96 9
|
3月前
|
存储 安全
《仿盒马》app开发技术分享-- 回收金提现安全锁校验(55)
上一节我们实现了回收金提现记录的展示功能,我们回收金相关的内容更加的丰富了,在之前的业务逻辑中我们添加了一个设置安全锁的功能,虽然我们成功设置了安全锁,也把对应的表信息提交到云端,但是我们并没有在提现的流程中去使用安全锁相关的内容,这一节我们就把安全锁相关的内容跟提现流程关联起来,让我们的功能安全性更高
87 5
|
3月前
《仿盒马》app开发技术分享-- 回收金提现记录查询(54)
上一节我们实现了回收金提现的功能,并且成功展示了当前账户的支出列表,但是我们的提现相关的记录并没有很好的给用户做出展示,用户只知道当前账户提现扣款,并不知道回收金的去向,这一节我们就要实现回收金记录的查询添加、查询、展示
83 5
|
3月前
|
数据库
《仿盒马》app开发技术分享-- 回收金提现(53)
上一节我们实现了银行卡的绑定跟回显,这一节我们要真正的实现银行卡提现的功能了,在这之前我们还需要对提现页的业务逻辑进行更进一步的优化,同时为了方便我们去进行数据间的交互,我们在个人信息模块新增了金额和积分的字段,方便我们其他页面的展示和隐藏
84 5
|
3月前
|
安全
《仿盒马》app开发技术分享-- 绑定银行卡回显(52)
上一节我们实现了安全锁的绑定,这一切都是为了帮助用户在提现流程上能有更好更安全的体验,现在我们开始正式着手提现相关的流程,我们先进行提现银行卡的绑定,绑定成功后我们关闭页面把数据回显到提现页
86 4
|
3月前
|
安全 数据安全/隐私保护
《仿盒马》app开发技术分享-- 设置安全锁(51)
上一节我们实现了提现页面以及部分组件的业务逻辑,那么我们在提现这一步为了更多的安全层面的考虑,设置了一个安全锁,用户只要开启了安全锁,那么每次的提现,都需要把本地的密码提交到云端核对安全锁的内容才可以执行后续的提现步骤,如果不能解锁,那么后续的内容都无法实现,这更好的保护了用户的财产安全
90 4
|
3月前
|
数据库
《仿盒马》app开发技术分享-- 回收金收支查询(49)
上一节我们实现了回收金页面的部分布局填充和内容展示,并且实现了当前订单收益总金额的展示,以及金额的隐藏,这一节我们来实现当前用户收支列表的展示,在这之前,我们先要修改一下我们recycleinfo表,我们把规格相关的内容添加上去,方便我们后续的逻辑编写,不然每次都根据weightid查询确实有一点点不方便
82 3