HarmonyOS(43) @BuilderParam标签使用指南

news2024/9/25 21:26:20

@BuilderParam

  • @BuilderParam
  • 使用举例
    • 定义模板
    • 定义具体实现
    • @BuilderParam初始化
  • demo源码
  • 参考资料

@BuilderParam

该标签有的作用有点类似于设计模式中的模板模式,类似于指定一个UI占位符,具体的实现交给具体的@Builder,顾名思义,可以看出@BuilderParam是以@Builder作为参数来使用的。这么说有点让人莫名其妙,通过例子来具体说明。

使用举例

定义模板

如下代码所示,定义一个显示文本文件的@BuilderParam showMessage方法,具体展示这个message的样式让客户端来定义。


struct Pattern{
    showMessage:(txt:string) => void;
  build() {
    Column(){
     //直接传参
      this.showMessage("Hello HarmonyOS")
    }.width('30%')

  }
}

定义具体实现

我们定义了三个@Builder方法,分别是showMessageLineThroughshowMessageUnderlineshowMessageUnderline,分别展示如下图样式的Text
在这里插入图片描述

  //横线从中字体中间穿过,字体设置为红色
  @Builder showMessageLineThrough(txt:string){
    Text() {
      Span(txt).fontSize(16).fontColor(Color.Red)
        .decoration({ type: TextDecorationType.LineThrough, color: Color.Red })
    }
    .borderWidth(1)
    .padding(10)
  }
  //下划线,字体为斜体,颜色为蓝色
  @Builder showMessageUnderline(txt:string){
    Text() {
      Span(txt).fontColor(Color.Blue).fontSize(16)
        .fontStyle(FontStyle.Italic)
        .decoration({ type: TextDecorationType.Underline, color: Color.Black })
    }
    .borderWidth(1)
    .padding(10)
  }
  //上划线,字体为绿色
  @Builder showMessageOverline(txt:string){
    Text() {
      Span(txt).fontSize(16).fontColor(Color.Green)
        .decoration({ type: TextDecorationType.Overline, color: Color.Green })
    }
    .borderWidth(1)
    .padding(10)
  }
}

@BuilderParam初始化

前面两部构建了@BuilderParam和对应的@Builder,他们的使用方式如下代码所示:可以看出@BuilderParam是以@Builder作为参数来使用的

  build() {
    Row() {
      //初始化@BuilderParam showMessage
      Pattern({showMessage:this.showMessageLineThrough})
      Pattern({showMessage:this.showMessageUnderline})
      Pattern({showMessage:this.showMessageOverline})
    }.alignItems(VerticalAlign.Center)
    .justifyContent(FlexAlign.SpaceAround)
    .height('100%')
    .width('100%')
  }

demo源码

@Entry
@Component
struct Index {

  build() {
    Row() {
      Pattern({showMessage:this.showMessageLineThrough})
      Pattern({showMessage:this.showMessageUnderline})
      Pattern({showMessage:this.showMessageOverline})
    }.alignItems(VerticalAlign.Center)
    .justifyContent(FlexAlign.SpaceAround)
    .height('100%')
    .width('100%')
  }

  @Builder showMessageLineThrough(txt:string){
    Text() {
      Span(txt).fontSize(16).fontColor(Color.Red)
        .decoration({ type: TextDecorationType.LineThrough, color: Color.Red })
    }
    .borderWidth(1)
    .padding(10)
  }
  @Builder showMessageUnderline(txt:string){
    Text() {
      Span(txt).fontColor(Color.Blue).fontSize(16)
        .fontStyle(FontStyle.Italic)
        .decoration({ type: TextDecorationType.Underline, color: Color.Black })
    }
    .borderWidth(1)
    .padding(10)
  }

  @Builder showMessageOverline(txt:string){
    Text() {
      Span(txt).fontSize(16).fontColor(Color.Green)
        .decoration({ type: TextDecorationType.Overline, color: Color.Green })
    }
    .borderWidth(1)
    .padding(10)
  }
}
@Component
struct Pattern{
   @BuilderParam showMessage:(txt:string) => void;
  build() {
    Column(){
      this.showMessage("Hello HarmonyOS")
    }.width('30%')

  }
}

参考资料

@BuilderParam装饰器:引用@Builder函数
线性布局(Row/Column)
设计模式之模版模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试内容集合

用例设计方法 (一)等价类划分  常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理…

腾讯云如何设置二级域名?

什么是二级域名? 例如我已申请的域名为: test.com //顶级域名 现在我开发的应用要部署到二级域名: blog.test.com 1、打开腾讯云控制台的我的域名,然后点击解析 2、在我的解析页面点击添加记录,然后需注意红色方框处…

js 请求blob:https:// 图片

方式1 def get_file_content_chrome(driver, uri):result driver.execute_async_script("""var uri arguments[0];var callback arguments[1];var toBase64 function(buffer){for(var r,nnew Uint8Array(buffer),tn.length,anew Uint8Array(4*Math.ceil(t/…

[WUSTCTF2020]funnyre

【【反调试】花指令patch与原理分析】https://www.bilibili.com/video/BV1mK411A75G?vd_source7ad69e0c2be65c96d9584e19b0202113 B站这个视频和这道题的花指令一样的 这个call百分之一万是辣鸡 重编译u他 经典辣鸡花指令 nop掉 下面一共有四处,一样的操作 然后回到main函…

奥利奥广告策略解析「扭一扭、舔一舔、泡一泡」广告为何深入人心?

作为一个多年的广告人,我认为奥利奥的「扭一扭、舔一舔、泡一泡」广告策略非常巧妙。今天可以从专业的角度来分析分析一下,大概应该有三大原因吧。 品牌识别度与记忆点: “扭一扭、舔一舔、泡一泡”这句广告语简洁易记,富有节奏…

如何30分钟下载完368G的Android系统源码?

如何30分钟下载完368G的Android系统源码? Android系统开发的一个痛点问题就是Android系统源码庞大,小则100G,大则,三四百G。如标题所言,本文介绍通过局域网高速网速下载源码的方法。 制作源码mirror 从源码git服务器A&#xff0c…

AGI 之 【Hugging Face】 的【问答系统】的 [评估并改进问答Pipeline] / [ 生成式问答 ] 的简单整理

AGI 之 【Hugging Face】 的【问答系统】的 [评估并改进问答Pipeline] / [ 生成式问答 ] 的简单整理 目录 AGI 之 【Hugging Face】 的【问答系统】的 [评估并改进问答Pipeline] / [ 生成式问答 ] 的简单整理 一、简单介绍 二、构建问答系统 三、评估并改进问答pipeline 1…

总结单例模式的写法

一、单例模式的概念 1.1 单例模式的概念 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。就是当前进程确保一个类全局只有一个实例。 1.2 单例模式的优…

【postgresql】时间函数和操作符

日期/时间操作符 加减操作符: 和 - 可以用于日期、时间、时间戳和时间间隔的加减操作。 SELECT 2024-01-01::date INTERVAL 1 day as "date"; ; -- 结果:2024-01-02SELECT 2024-01-01 12:00:00::timestamp - INTERVAL 2 hours as "…

泽众一站式性能测试平台P-One监控指标的意义

在当今数字化和信息化高度发展的时代,企业把保障系统稳定运行、优化业务流程和提升用户体验摆在首要位置。然而,在现如今复杂的分布式系统中,各个组件和服务之间的交互频繁且紧密,当系统出现性能瓶颈时,传统的监测手段…

Flutter 初识:导航控件

Flutter导航控件小结 路由与导航Navigator核心方法属性示例基本导航示例替换当前页面并推入新页面使用命名路由动态生成路由额外的导航功能 完整示例代码 MaterialPageRoute属性示例 CupertinoPageRoute属性示例 应用栏与底部导航AppBar属性解析示例 BottomNavigationBar属性解…

gorm只查询某一些字段字段的方法Select, 和只查询某一字段方法 Pluck

gorm中默认是查询所有字段的, 如果我们只需要获取某些字段的值,可以通过使用 Select方法来指定要查询的字段来实现, 也可以通过定义一个需要字段的结构体来实现; 而如果我们只需要查询某一个字段的值就可以使用 Pluck方法来获取(这…

【Python】一文向您详细介绍 `isinstance()` 的原理、作用和使用场景

【Python】一文向您详细介绍 isinstance() 的原理、作用和使用场景 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985…

【精品资料】数字乡村一体化解决方案(45页PPT)

引言:数字乡村一体化解决方案是响应国家乡村振兴战略,依托现代信息技术和数字经济理念,对乡村进行全面改造和升级的综合框架。该方案旨在通过数字化手段,推动乡村产业、治理、文化、教育、医疗等领域的协同发展,实现乡…

2024年【通信安全员ABC证】实操考试视频及通信安全员ABC证考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年通信安全员ABC证实操考试视频为正在备考通信安全员ABC证操作证的学员准备的理论考试专题,每个月更新的通信安全员ABC证考试试题祝您顺利通过通信安全员ABC证考试。 1、【单选题】.重大事故一般由事故…

智慧水利解决方案:从理论到实践的全面跨越,展示其在水资源管理、水灾害预警、水生态保护等方面的创新应用

目录 一、引言:智慧水利的时代背景与意义 二、智慧水利的理论框架与技术体系 1、理论框架 2、技术体系 三、智慧水利在水资源管理中的应用 1、水资源优化配置 2、水量水质协同管理 四、智慧水利在水灾害预警中的应用 1、洪水预警与应急响应 2、干旱监测与评…

【学党史、悟思想、办实事、开新局】学习《中国共产党历史》一、鸦片战争与近代中国社会的演变

历史是最好的教科书。学习党史、国史,是坚持和发展中国特色社会主义、把党和国家各项事业继续推向前进的必修课。 而我们作为普通群众,学习跟了解历史是我觉得可以做到的最基本东西,从前有过一段时间对历史特感兴趣,如中国古代史…

AI算法15-弹性网络回归算法Elastic Net Regression | ENR

弹性网络回归算法简介 在机器学习领域中,弹性网络(Elastic Net)是一种结合了L1范数(套索回归)和L2范数(岭回归)的正则化方法。它综合了两者的优点,既可以实现特征选择,又…

从“卷模型”到“卷应用”:AI时代的价值重塑与个性化智能探索

🌈所属专栏:【其它】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点…

Java基础之集合

集合和数组的类比 数组: 长度固定可以存基本数据类型和引用数据类型 集合: 长度可变只能存引用数据类型存储基本数据类型要把他转化为对应的包装类 ArrayList集合 ArrayList成员方法 添加元素 删除元素 索引删除 查询 遍历数组