当前位置: 首页 > news >正文

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

@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 showMessagePattern({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)
设计模式之模版模式

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 捷配生产笔记-细间距芯片的表面处理工艺:OSP与沉金工艺的重要性
  • android13 文件管理器无法安装apk 奔溃问题
  • android13 cat /proc/cupinfo没有Serial问题
  • 七款好用的公司电脑监控软件推荐|2024年电脑监控软件干货整理!
  • APP下载二维码的主要用途,制作也简单!
  • 广电影视NAS共享非编存储磁盘阵列
  • ONLYOFFICE 8.1版本版本桌面编辑器测评
  • unordered_map和set
  • VPS拨号服务器:独享的高效与安全
  • MMII 的多模态医学图像交互框架:更直观地理解人体解剖结构和疾病
  • 电脑拼图软件有哪些?盘点7种简单好用电脑拼图软件
  • 张量分解(3)——CP分解
  • Kindling-OriginX 在快手 Staging 环境的异常诊断效果分享
  • 如何切换手机的ip地址
  • 怎么搭建微信商城
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Java超时控制的实现
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PaddlePaddle-GitHub的正确打开姿势
  • Python学习之路16-使用API
  • Spring Boot MyBatis配置多种数据库
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从输入URL到页面加载发生了什么
  • 大快搜索数据爬虫技术实例安装教学篇
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 三分钟教你同步 Visual Studio Code 设置
  • 深入浏览器事件循环的本质
  • 双管齐下,VMware的容器新战略
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我有几个粽子,和一个故事
  • 原生Ajax
  • 数据可视化之下发图实践
  • ​zookeeper集群配置与启动
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #if等命令的学习
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #Z0458. 树的中心2
  • (12)Hive调优——count distinct去重优化
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (回溯) LeetCode 77. 组合
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ***监测系统的构建(chkrootkit )
  • .Family_物联网
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .Net 中Partitioner static与dynamic的性能对比
  • .net6Api后台+uniapp导出Excel
  • .net6使用Sejil可视化日志