《仿盒马》app开发技术分享-- 自定义标题栏&商品详情初探(9)

鸿蒙小林
• 阅读 4

技术栈

Appgallery connect

开发准备

上一节我们实现了顶部toolbar的地址选择,会员码展示,首页的静态页面就先告一段落,这节我们来实现商品列表item的点击传值、自定义标题栏。

功能分析

1.自定义标题栏 当我们进入二级三级页面的时候,就需要向用户介绍我们当前的页面信息,标题栏很好的实现了这个效果,并且进入的页面级别过多,也要给用户一个可点击的退出按钮。当然了,有些页面是不需要有返回按钮的,这里我们还要兼顾通用性。 2.页面间传值 页面之前的数据传递,是app中比较常见也是比较重要的知识点,这里我们通过点击列表的条目进行数据的传递,然后在详情页进行数据的接收

代码实现

自定义标题栏

import router from '@ohos.router'

@Component export struct CommonTopBar { @Prop title: string @Prop alpha: number private titleAlignment: TextAlign = TextAlign.Center private backButton: boolean = true private onBackClick?: () => void

build() { Column() { Blank() .backgroundColor(Color.Red) .opacity(this.alpha) Stack({ alignContent: Alignment.Start }) { Stack() .height(50) .width("100%") .opacity(this.alpha) .backgroundColor(Color.Red) Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center }) { Text(this.title) .flexGrow(1) .textAlign(this.titleAlignment) .fontSize(18) .fontColor(Color.Black) .align(Alignment.Center) .maxLines(1) .textOverflow({ overflow: TextOverflow.Ellipsis }) } .height(50) .margin({ left: 50, right: 50 }) .alignSelf(ItemAlign.Center)

    if (this.backButton) {
        Stack() {
          Image($r('app.media.ic_back'))
            .height(16)
            .width(12)
            .objectFit(ImageFit.Contain)
            .align(Alignment.Center)

        }
        .onClick(() => {
          this.onBackClick?.()
          router.back();
        })
        .height(50)
        .width(50)
    }

  }
  .height(50)
  .width("100%")
  Divider().strokeWidth(0.5).color("#E6E6E6")
}.backgroundColor(Color.White)
.height(51)

} } 在标题栏中我们使用了一些逻辑判断,并且设置标题是外部传入的,而且还预留了一个事件的回调,这能让我们的标题栏更加的灵活

页面间传值 首先我们需要创建一个商品详情页的页面,然后把我们的自定义标题栏引入进去

import { CommonTopBar } from '../widget/CommonTopBar';

@Entry @Component struct ProductDetailsPage {

build() { Column() { CommonTopBar({ title: "商品详情", alpha: 0, titleAlignment: TextAlign.Center ,backButton:true}) } .height('100%') .width('100%') } } 然后在商品流的点击事件里使用router

.onClick(() => { router.pushUrl({ url: 'pages/component/ProductDetailsPage', params: item }, (err) => { if (err) { console.error(Invoke pushUrl failed, code is ${err.code}, message is ${err.message}); return; } console.info('Invoke pushUrl succeeded.'); }); })

这里我们把整个item的信息都传递过去,方便我们使用

接收

@State receivedParams: HomeProductList = {} as HomeProductList;

aboutToAppear(): void { let order= router.getParams() as HomeProductList; console.info('Received params:',order); }

在页面上我们先展示出来 Text(JSON.stringify(this.receivedParams)) .fontColor(Color.Black) 到这里我们就实现了本节的内容了,下一节我们将要丰富商品详情页的内容

点赞
收藏
评论区
推荐文章
鸿蒙小林 鸿蒙小林
9小时前
《仿盒马》app开发技术分享-- 商品详情页(10)
技术栈Appgalleryconnect开发准备上一节我们实现了自定义标题栏和商品详情的数据接收,我们已经拿到了想要的数据,这一节我们要丰富商品详情页的内容。商品详情页面我们需要展示的是商品的各个属性参数、商品的图片、商品规格、活动详情等功能分析商品详情页
鸿蒙小林 鸿蒙小林
9小时前
《仿盒马》app开发技术分享-- 商品规格弹窗(11)
技术栈Appgalleryconnect开发准备上一节我们实现了商品详情页面,并且成功在页面上展示了商品的图片、商品规格、活动详情等信息,要知道同一种商品大多数都是有多种型号跟规格的,所以这一节我们来实现商品的规格弹窗。这节的要点是自定义弹窗的运用。功能分
鸿蒙小林 鸿蒙小林
9小时前
《仿盒马》app开发技术分享-- 分类模块顶部导航列表弹窗(16)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。功能分析1.弹窗自定
鸿蒙小林 鸿蒙小林
2小时前
《仿盒马》app开发技术分享-- 分类右侧商品列表(18)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页左侧二级分类列表功能,并实现了顶部列表&弹窗跟左侧列表的联动,这一节我们需要在它们联动的基础上继续添加右侧列表的联动效果功能分析1.列表展示当我们选择顶部一级分类列表时,左侧列表展示二级
鸿蒙小林 鸿蒙小林
2小时前
《仿盒马》app开发技术分享-- 确认订单页(业务逻辑)(30)
技术栈Appgalleryconnect开发准备上一节我们实现了确认订单页的页面绘制和价格计算优惠计算,订单列表展示等功能,这一节我们来实现确认订单页的整个业务逻辑。首先我们要实现的就是地址的选择,然后把我们计算的价格,商品列表等数据保存起来,然后我们开始
鸿蒙小林 鸿蒙小林
2小时前
《仿盒马》app开发技术分享-- 积分页组件新增(64)
技术栈Appgalleryconnect开发准备上一节我们创建了积分页,给页面添加了标题栏和积分展示的组件。这一节我们继续丰富积分页的内容,添加引导栏,积分明细展示等区域功能分析因为页面的关联不强,我们采用组件引入的方式实现引导栏,同时,在下方继续添加对应
鸿蒙小林 鸿蒙小林
2小时前
《仿盒马》app开发技术分享-- 兑换商品详情(69)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换商品列表的展示,用户可以在回收之后通过积分页面进入兑换列表页查看当前能够兑换的商品了,我们距离一个完整的app又更近了一步,现在我们要实现的就是当用户点击列表条目的时候能够查看数据详情。功
鸿蒙小林 鸿蒙小林
2小时前
《仿盒马》app开发技术分享-- 商品兑换校验(70)
技术栈Appgalleryconnect开发准备上一节我们实现了可兑换商品的详情,我们能够查看到商品更多的信息,这一节我们来实现商品兑换相关的功能,在进行商品兑换之前,我们在兑换详情页面,点击立即兑换按钮之后我们需要跳转到兑换详情页,但是用户的积分可能达不
鸿蒙小林 鸿蒙小林
2小时前
《仿盒马》app开发技术分享-- 兑换订单列表框架(75)
技术栈Appgalleryconnect开发准备上一节我们针对订单兑换的业务逻辑进行了完善,成功的在兑换物品之后修改了用户信息的修改,新增了积分消费的记录。这一节我们实现订单创建之后进入的列表展示页框架。功能分析兑换商品的订单列表框架我们选择使用tabs,
鸿蒙小林 鸿蒙小林
11分钟前
《伴时匣》app开发技术分享--表单提交准备(4)
技术栈Appgalleryconnect开发准备上一节我们实现了用户登录功能,现在我们进入首页,可以开始准备着手发布我们的日期计划了,在这之前我们先实现信息表的创建。在首页实现一个标题栏,一个悬浮的按钮。功能分析我们的信息表要展示的内容很多,首先是我们的事