<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>何老师的济亨网</title><link>https://wb98.com/</link><description>五笔打字通主页</description><item><title>鸿蒙版应用《五笔打字训练》发布</title><link>https://wb98.com/post/392.html</link><description>&lt;p&gt;学了鸿蒙开发语言arkts，做出了一个五笔打字训练应用，取名《五笔打字训练》，现在已经发布在华为的手机应用市场。&lt;/p&gt;&lt;p&gt;买了华为的新手机，操作系统为鸿蒙HarmonyOS的可以去下载试用，应用现在是免费的，即免费下载，免费使用。&lt;/p&gt;&lt;p&gt;打开你的华为应用市场，搜索“五笔打字训练”就可以找到，图标 和 应用的界面如下：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://wb98.com/zb_users/upload/2025/09/202509120953311161784.png&quot; alt=&quot;wbdz1.PNG&quot; title=&quot;wbdz1.PNG&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://wb98.com/zb_users/upload/2025/09/202509120954126307116.jpg&quot; alt=&quot;1.JPG&quot; title=&quot;1.JPG&quot; width=&quot;377&quot; height=&quot;671&quot; style=&quot;width: 377px; height: 671px;&quot;/&gt;&lt;/p&gt;</description><pubDate>Fri, 12 Sep 2025 09:46:07 +0800</pubDate></item><item><title>CustomDialog弹窗，bindContentCover做的弹窗</title><link>https://wb98.com/post/391.html</link><description>&lt;p&gt;做了一个CustomDialog弹窗，用于输入数字。&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;@Entry
@Component
struct&amp;nbsp;Page6&amp;nbsp;{
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;message1:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;默认值&amp;#39;
&amp;nbsp;&amp;nbsp;controller:&amp;nbsp;CustomDialogController&amp;nbsp;=&amp;nbsp;new&amp;nbsp;CustomDialogController({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;builder:&amp;nbsp;TextDialog({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;confirm:&amp;nbsp;(value)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message1&amp;nbsp;=&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}),&amp;nbsp;//要加括号,要在这里传参
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alignment:&amp;nbsp;DialogAlignment.Bottom,&amp;nbsp;//控制弹窗位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;offset:&amp;nbsp;{&amp;nbsp;dx:&amp;nbsp;0,&amp;nbsp;dy:&amp;nbsp;-30&amp;nbsp;}//位置微调&amp;nbsp;--&amp;nbsp;源码来自&amp;nbsp;wb98.com
&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;20&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.message1)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;弹出&amp;nbsp;Dialog&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.controller.open()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.justifyContent(FlexAlign.Center)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.Green)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.expandSafeArea([SafeAreaType.SYSTEM],&amp;nbsp;[SafeAreaEdge.TOP,&amp;nbsp;SafeAreaEdge.BOTTOM])
&amp;nbsp;&amp;nbsp;}
}

//========================
@CustomDialog
&amp;nbsp;&amp;nbsp;//自定义弹窗，可以自由输入数字
struct&amp;nbsp;TextDialog&amp;nbsp;{
&amp;nbsp;&amp;nbsp;controller:&amp;nbsp;CustomDialogController&amp;nbsp;=&amp;nbsp;new&amp;nbsp;CustomDialogController({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;builder:&amp;nbsp;TextDialog()//控制的对话框名，要加括号
&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;confirm:&amp;nbsp;(value:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;void&amp;nbsp;=&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;}&amp;nbsp;//回调函数
&amp;nbsp;&amp;nbsp;value1:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(&amp;#39;请输入你的答案&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextInput({&amp;nbsp;placeholder:&amp;nbsp;&amp;#39;请输入数字&amp;#39;,&amp;nbsp;text:&amp;nbsp;&amp;#39;&amp;#39;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;80%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.type(InputType.Number)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onChange((value)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.value1&amp;nbsp;=&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row({&amp;nbsp;space:&amp;nbsp;30&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;取消&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.controller.close()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;确定&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.confirm(this.value1)&amp;nbsp;//通过自定义弹窗的回调函数来获得一个值
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.controller.close()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}.padding(20)
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;下面2段代码都是用bindContentCover做的弹窗，高仿上面做的&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;CustomDialog弹窗，也是用于输入数字。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;代码1：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;@Entry
@Component
struct&amp;nbsp;Page5&amp;nbsp;{
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;isShow:&amp;nbsp;boolean&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;message:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;默认值&amp;#39;
&amp;nbsp;&amp;nbsp;messageZJ:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;

&amp;nbsp;&amp;nbsp;@Builder
&amp;nbsp;&amp;nbsp;myBuilder()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Stack({&amp;nbsp;alignContent:&amp;nbsp;Alignment.Bottom&amp;nbsp;})&amp;nbsp;{&amp;nbsp;//这里调节弹窗位置
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;父容器透明背景
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;空容器仅用于布局的底部透明背景
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;.backgroundColor(Color.Transparent)//纯透明
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;.backgroundColor(&amp;#39;rgba(0,0,0,0.7)&amp;#39;)&amp;nbsp;//黑色背景，0.7透明度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(&amp;#39;#8b555555&amp;#39;)&amp;nbsp;//这2句是为弹窗加上半透明的背景
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.expandSafeArea([SafeAreaType.SYSTEM],&amp;nbsp;[SafeAreaEdge.TOP,&amp;nbsp;SafeAreaEdge.BOTTOM])

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;子组件按钮
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{&amp;nbsp;//内层容器

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextInput({&amp;nbsp;placeholder:&amp;nbsp;&amp;#39;请输入文本&amp;#39;,&amp;nbsp;text:&amp;nbsp;&amp;#39;默认文本&amp;#39;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;80%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.type(InputType.Number)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.cancelButton({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//右边的X按钮
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;icon:&amp;nbsp;{&amp;nbsp;size:&amp;nbsp;16&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onChange((value:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;console.log(&amp;#39;这是：&amp;#39;,&amp;nbsp;value)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.messageZJ&amp;nbsp;=&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row({&amp;nbsp;space:&amp;nbsp;20&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;取消&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.isShow&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;确定&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;this.messageZJ
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.isShow&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.White)&amp;nbsp;//中间对话框背景颜色
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.padding(20)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.borderRadius(10)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.Transparent)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;80%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.margin({bottom:30})&amp;nbsp;//弹窗位置微调&amp;nbsp;wb86.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//----------------------------


&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({space:50})&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.bindContentCover($$this.isShow,&amp;nbsp;this.myBuilder(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modalTransition:&amp;nbsp;ModalTransition.NONE,&amp;nbsp;//DEFAULT从下往上,ALPHA是透明度变化
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;backgroundColor:&amp;nbsp;Color.Pink
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontColor(Color.White)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;弹出&amp;nbsp;Stack&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.isShow&amp;nbsp;=true
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.justifyContent(FlexAlign.Center)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(&amp;#39;#8b555555&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.Green)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.expandSafeArea([SafeAreaType.SYSTEM],&amp;nbsp;[SafeAreaEdge.TOP,&amp;nbsp;SafeAreaEdge.BOTTOM])

&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;代码2：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;@Entry
@Component
struct&amp;nbsp;Page7&amp;nbsp;{

&amp;nbsp;&amp;nbsp;@State&amp;nbsp;isShow:&amp;nbsp;boolean&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;message:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;默认值&amp;#39;
&amp;nbsp;&amp;nbsp;messageZJ:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;

&amp;nbsp;&amp;nbsp;@Builder
&amp;nbsp;&amp;nbsp;myBuilder()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;子组件设置不透明背景色
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{&amp;nbsp;//内层容器

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextInput({&amp;nbsp;placeholder:&amp;nbsp;&amp;#39;请输入文本&amp;#39;,&amp;nbsp;text:&amp;nbsp;&amp;#39;默认文本&amp;#39;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;80%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.type(InputType.Number)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.textIndent(0)//设置首行文本缩进
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.cancelButton({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//右边的X按钮
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;icon:&amp;nbsp;{&amp;nbsp;size:&amp;nbsp;16&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onChange((value:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.messageZJ=value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row({&amp;nbsp;space:&amp;nbsp;20&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;取消&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.isShow&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;确定&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;this.messageZJ
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.isShow&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.White)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.padding(20)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.borderRadius(10)


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.Transparent)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;80%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.justifyContent(FlexAlign.End)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.offset({y:-30})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;.backgroundColor(Color.Transparent)//纯透明--源码来自&amp;nbsp;wb86.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;.backgroundColor(&amp;#39;rgba(0,0,0,0.7)&amp;#39;)&amp;nbsp;//黑色背景，0.7透明度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(&amp;#39;#8b555555&amp;#39;)&amp;nbsp;//这2句是为弹窗加上半透明的背景
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.expandSafeArea([SafeAreaType.SYSTEM],&amp;nbsp;[SafeAreaEdge.TOP,&amp;nbsp;SafeAreaEdge.BOTTOM])

&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({space:20}){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontColor(Color.White)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;确定&amp;nbsp;Column&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.bindContentCover($$this.isShow,&amp;nbsp;this.myBuilder(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modalTransition:&amp;nbsp;ModalTransition.NONE,&amp;nbsp;//DEFAULT从下往上,ALPHA是透明度变化
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;backgroundColor:&amp;nbsp;Color.Pink
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.isShow=!this.isShow
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.Green)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.justifyContent(FlexAlign.Center)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.expandSafeArea([SafeAreaType.SYSTEM],&amp;nbsp;[SafeAreaEdge.TOP,&amp;nbsp;SafeAreaEdge.BOTTOM])


&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 11 Jul 2025 23:50:14 +0800</pubDate></item><item><title>懒加载代码，处理的数据类型是泛型</title><link>https://wb98.com/post/390.html</link><description>&lt;p&gt;以下代码处理的数据类型为泛型：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;//&amp;nbsp;BasicDataSource实现了IDataSource接口，用于管理listener监听，以及通知LazyForEach数据更新
//&amp;nbsp;以下2个类（BasicDataSource，MyDataSource），用于懒加载的data数据处理
class&amp;nbsp;BasicDataSource&amp;lt;T&amp;gt;&amp;nbsp;implements&amp;nbsp;IDataSource&amp;nbsp;{
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listeners:&amp;nbsp;DataChangeListener[]&amp;nbsp;=&amp;nbsp;[];
&amp;nbsp;&amp;nbsp;private&amp;nbsp;originDataArray:&amp;nbsp;T[]&amp;nbsp;=&amp;nbsp;[];

&amp;nbsp;&amp;nbsp;public&amp;nbsp;totalCount():&amp;nbsp;number&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;getData(index:&amp;nbsp;number):&amp;nbsp;T&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;this.originDataArray[index];
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;该方法为框架侧调用，为LazyForEach组件向其数据源处添加listener监听
&amp;nbsp;&amp;nbsp;registerDataChangeListener(listener:&amp;nbsp;DataChangeListener):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(this.listeners.indexOf(listener)&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.info(&amp;#39;add&amp;nbsp;listener&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.push(listener);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;该方法为框架侧调用，为对应的LazyForEach组件在数据源处去除listener监听
&amp;nbsp;&amp;nbsp;unregisterDataChangeListener(listener:&amp;nbsp;DataChangeListener):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;pos&amp;nbsp;=&amp;nbsp;this.listeners.indexOf(listener);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;&amp;gt;=&amp;nbsp;0)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.info(&amp;#39;remove&amp;nbsp;listener&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.splice(pos,&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件需要重载所有子组件
&amp;nbsp;&amp;nbsp;notifyDataReload():&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataReloaded();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件需要在index对应索引处添加子组件
&amp;nbsp;&amp;nbsp;notifyDataAdd(index:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataAdd(index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange([{type:&amp;nbsp;DataOperationType.ADD,&amp;nbsp;index:&amp;nbsp;index}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件在index对应索引处数据有变化，需要重建该子组件
&amp;nbsp;&amp;nbsp;notifyDataChange(index:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataChange(index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange([{type:&amp;nbsp;DataOperationType.CHANGE,&amp;nbsp;index:&amp;nbsp;index}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件需要在index对应索引处删除该子组件
&amp;nbsp;&amp;nbsp;notifyDataDelete(index:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataDelete(index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange([{type:&amp;nbsp;DataOperationType.DELETE,&amp;nbsp;index:&amp;nbsp;index}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件将from索引和to索引处的子组件进行交换
&amp;nbsp;&amp;nbsp;notifyDataMove(from:&amp;nbsp;number,&amp;nbsp;to:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataMove(from,&amp;nbsp;to);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[{type:&amp;nbsp;DataOperationType.EXCHANGE,&amp;nbsp;index:&amp;nbsp;{start:&amp;nbsp;from,&amp;nbsp;end:&amp;nbsp;to}}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;notifyDatasetChange(operations:&amp;nbsp;DataOperation[]):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDatasetChange(operations);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}
}

class&amp;nbsp;MyDataSource&amp;lt;T&amp;gt;&amp;nbsp;extends&amp;nbsp;BasicDataSource&amp;lt;T&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;private&amp;nbsp;dataArray:&amp;nbsp;T[]&amp;nbsp;=&amp;nbsp;[];

&amp;nbsp;&amp;nbsp;public&amp;nbsp;totalCount():&amp;nbsp;number&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;this.dataArray.length;
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;getData(index:&amp;nbsp;number):&amp;nbsp;T&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;this.dataArray[index];
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;pushData(data:&amp;nbsp;T):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.dataArray.push(data);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.notifyDataAdd(this.dataArray.length&amp;nbsp;-&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;pushAllData(data:&amp;nbsp;T[]):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;index&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;index&amp;nbsp;&amp;lt;&amp;nbsp;data.length;&amp;nbsp;index++)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.pushData(data[index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}

@Entry
@Component
struct&amp;nbsp;Page8&amp;nbsp;{
&amp;nbsp;&amp;nbsp;//要懒加载的数据&amp;nbsp;data&amp;nbsp;必须要经过&amp;nbsp;MyDataSource&amp;nbsp;处理一下才行。
&amp;nbsp;&amp;nbsp;private&amp;nbsp;data:&amp;nbsp;MyDataSource&amp;lt;string&amp;gt;&amp;nbsp;=&amp;nbsp;new&amp;nbsp;MyDataSource&amp;lt;string&amp;gt;();

&amp;nbsp;&amp;nbsp;aboutToAppear()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;//加载数据有3种方法，方法1：
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;array:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;10000;&amp;nbsp;i++)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;array.push(`Hello&amp;nbsp;${i}`)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.data.pushAllData(array)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;//方法2&amp;nbsp;-&amp;nbsp;&amp;nbsp;源码来自&amp;nbsp;wb98.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;array&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;#39;中国&amp;#39;,&amp;nbsp;&amp;#39;美国&amp;#39;,&amp;nbsp;&amp;#39;英国&amp;#39;,&amp;nbsp;&amp;#39;法国&amp;#39;,&amp;nbsp;&amp;#39;俄罗斯&amp;#39;,&amp;nbsp;&amp;#39;德国&amp;#39;,&amp;nbsp;&amp;#39;新西兰&amp;#39;,&amp;nbsp;&amp;#39;哥伦比亚&amp;#39;,&amp;nbsp;&amp;#39;新加坡&amp;#39;,&amp;nbsp;&amp;#39;日本&amp;#39;,&amp;nbsp;&amp;#39;越南&amp;#39;,&amp;nbsp;&amp;#39;加拿大&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;乌克兰&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;南非&amp;#39;,&amp;nbsp;&amp;#39;埃及&amp;#39;,&amp;nbsp;&amp;#39;泰国&amp;#39;,&amp;nbsp;&amp;#39;澳大利亚&amp;#39;,&amp;nbsp;&amp;#39;智利&amp;#39;,&amp;nbsp;&amp;#39;巴西&amp;#39;,&amp;nbsp;&amp;#39;冰岛&amp;#39;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;this.data.pushAllData(array)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;const&amp;nbsp;array=colors1&amp;nbsp;&amp;nbsp;//方法3---导入别的页面的数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;this.data.pushAllData(array)
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//----------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List({&amp;nbsp;space:&amp;nbsp;3&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LazyForEach(this.data,&amp;nbsp;(item:&amp;nbsp;string,&amp;nbsp;index:&amp;nbsp;number)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListItem()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontSize(50)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AlertDialog.show({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message:&amp;nbsp;&amp;#39;Index：&amp;#39;&amp;nbsp;+&amp;nbsp;index.toString()&amp;nbsp;+&amp;nbsp;&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;item：&amp;#39;&amp;nbsp;+&amp;nbsp;item
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp;(item:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}.cachedCount(5)&amp;nbsp;//缓存&amp;nbsp;源码来自&amp;nbsp;wb86.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//----------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 10 Jul 2025 22:26:48 +0800</pubDate></item><item><title>懒加载代码，处理的数据是string类型</title><link>https://wb98.com/post/389.html</link><description>&lt;p&gt;懒加载的数据要先经过处理，以下代码处理的数据是string类型。&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;//&amp;nbsp;BasicDataSource实现了IDataSource接口，用于管理listener监听，以及通知LazyForEach数据更新
//&amp;nbsp;以下2个类（BasicDataSource，MyDataSource），用于懒加载的data数据处理
class&amp;nbsp;BasicDataSource&amp;nbsp;implements&amp;nbsp;IDataSource&amp;nbsp;{
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listeners:&amp;nbsp;DataChangeListener[]&amp;nbsp;=&amp;nbsp;[];
&amp;nbsp;&amp;nbsp;private&amp;nbsp;originDataArray:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[];

&amp;nbsp;&amp;nbsp;public&amp;nbsp;totalCount():&amp;nbsp;number&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;getData(index:&amp;nbsp;number):&amp;nbsp;string&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;this.originDataArray[index];
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;该方法为框架侧调用，为LazyForEach组件向其数据源处添加listener监听
&amp;nbsp;&amp;nbsp;registerDataChangeListener(listener:&amp;nbsp;DataChangeListener):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(this.listeners.indexOf(listener)&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.info(&amp;#39;add&amp;nbsp;listener&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.push(listener);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;该方法为框架侧调用，为对应的LazyForEach组件在数据源处去除listener监听
&amp;nbsp;&amp;nbsp;unregisterDataChangeListener(listener:&amp;nbsp;DataChangeListener):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;pos&amp;nbsp;=&amp;nbsp;this.listeners.indexOf(listener);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;&amp;gt;=&amp;nbsp;0)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.info(&amp;#39;remove&amp;nbsp;listener&amp;#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.splice(pos,&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件需要重载所有子组件
&amp;nbsp;&amp;nbsp;notifyDataReload():&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataReloaded();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件需要在index对应索引处添加子组件
&amp;nbsp;&amp;nbsp;notifyDataAdd(index:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataAdd(index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange([{type:&amp;nbsp;DataOperationType.ADD,&amp;nbsp;index:&amp;nbsp;index}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件在index对应索引处数据有变化，需要重建该子组件
&amp;nbsp;&amp;nbsp;notifyDataChange(index:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataChange(index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange([{type:&amp;nbsp;DataOperationType.CHANGE,&amp;nbsp;index:&amp;nbsp;index}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件需要在index对应索引处删除该子组件
&amp;nbsp;&amp;nbsp;notifyDataDelete(index:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataDelete(index);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange([{type:&amp;nbsp;DataOperationType.DELETE,&amp;nbsp;index:&amp;nbsp;index}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;//&amp;nbsp;通知LazyForEach组件将from索引和to索引处的子组件进行交换
&amp;nbsp;&amp;nbsp;notifyDataMove(from:&amp;nbsp;number,&amp;nbsp;to:&amp;nbsp;number):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDataMove(from,&amp;nbsp;to);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;写法2：listener.onDatasetChange(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[{type:&amp;nbsp;DataOperationType.EXCHANGE,&amp;nbsp;index:&amp;nbsp;{start:&amp;nbsp;from,&amp;nbsp;end:&amp;nbsp;to}}]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;notifyDatasetChange(operations:&amp;nbsp;DataOperation[]):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listeners.forEach(listener&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.onDatasetChange(operations);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}
}

class&amp;nbsp;MyDataSource&amp;nbsp;extends&amp;nbsp;BasicDataSource&amp;nbsp;{
&amp;nbsp;&amp;nbsp;private&amp;nbsp;dataArray:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[];

&amp;nbsp;&amp;nbsp;public&amp;nbsp;totalCount():&amp;nbsp;number&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;this.dataArray.length;
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;getData(index:&amp;nbsp;number):&amp;nbsp;string&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;this.dataArray[index];
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;pushData(data:&amp;nbsp;string):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.dataArray.push(data);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.notifyDataAdd(this.dataArray.length&amp;nbsp;-&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;public&amp;nbsp;pushAllData(data:&amp;nbsp;string[]):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;index&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;index&amp;nbsp;&amp;lt;&amp;nbsp;data.length;&amp;nbsp;index++)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.pushData(data[index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}

@Entry
@Component
struct&amp;nbsp;Page8&amp;nbsp;{
&amp;nbsp;&amp;nbsp;//要懒加载的数据&amp;nbsp;data&amp;nbsp;必须要经过&amp;nbsp;MyDataSource&amp;nbsp;处理一下才行。
&amp;nbsp;&amp;nbsp;private&amp;nbsp;data:&amp;nbsp;MyDataSource&amp;nbsp;=&amp;nbsp;new&amp;nbsp;MyDataSource();

&amp;nbsp;&amp;nbsp;aboutToAppear()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;//加载数据有3种方法，方法1：
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;array:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;=&amp;nbsp;10000;&amp;nbsp;i++)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;array.push(`Hello&amp;nbsp;${i}`)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.data.pushAllData(array)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;//方法2&amp;nbsp;-&amp;nbsp;&amp;nbsp;源码来自&amp;nbsp;wb98.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;array&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;#39;中国&amp;#39;,&amp;nbsp;&amp;#39;美国&amp;#39;,&amp;nbsp;&amp;#39;英国&amp;#39;,&amp;nbsp;&amp;#39;法国&amp;#39;,&amp;nbsp;&amp;#39;俄罗斯&amp;#39;,&amp;nbsp;&amp;#39;德国&amp;#39;,&amp;nbsp;&amp;#39;新西兰&amp;#39;,&amp;nbsp;&amp;#39;哥伦比亚&amp;#39;,&amp;nbsp;&amp;#39;新加坡&amp;#39;,&amp;nbsp;&amp;#39;日本&amp;#39;,&amp;nbsp;&amp;#39;越南&amp;#39;,&amp;nbsp;&amp;#39;加拿大&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;乌克兰&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#39;南非&amp;#39;,&amp;nbsp;&amp;#39;埃及&amp;#39;,&amp;nbsp;&amp;#39;泰国&amp;#39;,&amp;nbsp;&amp;#39;澳大利亚&amp;#39;,&amp;nbsp;&amp;#39;智利&amp;#39;,&amp;nbsp;&amp;#39;巴西&amp;#39;,&amp;nbsp;&amp;#39;冰岛&amp;#39;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;this.data.pushAllData(array)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;const&amp;nbsp;array=colors1&amp;nbsp;&amp;nbsp;//方法3---导入别的页面的数据
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;this.data.pushAllData(array)
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//----------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List({&amp;nbsp;space:&amp;nbsp;3&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LazyForEach(this.data,&amp;nbsp;(item:&amp;nbsp;string,&amp;nbsp;index:&amp;nbsp;number)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListItem()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontSize(50)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AlertDialog.show({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message:&amp;nbsp;&amp;#39;Index：&amp;#39;&amp;nbsp;+&amp;nbsp;index.toString()&amp;nbsp;+&amp;nbsp;&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;item：&amp;#39;&amp;nbsp;+&amp;nbsp;item
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp;(item:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}.cachedCount(5)&amp;nbsp;//缓存
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//----------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 10 Jul 2025 22:06:37 +0800</pubDate></item><item><title>List组件新增项，删除项的代码 arkts</title><link>https://wb98.com/post/388.html</link><description>&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;@Entry
@Component
struct&amp;nbsp;Page9&amp;nbsp;{
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;itemList:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[&amp;#39;Item1&amp;#39;,&amp;nbsp;&amp;#39;Item2&amp;#39;,&amp;nbsp;&amp;#39;Item3&amp;#39;];

&amp;nbsp;&amp;nbsp;@Builder
&amp;nbsp;&amp;nbsp;deleteItem(index:&amp;nbsp;number)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;删除此项&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontSize(15)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.margin({&amp;nbsp;left:&amp;nbsp;10&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//删除1项方法1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.itemList&amp;nbsp;=&amp;nbsp;this.itemList.filter((_,&amp;nbsp;i)&amp;nbsp;=&amp;gt;&amp;nbsp;i&amp;nbsp;!==&amp;nbsp;index);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//删除2项方法2&amp;nbsp;-&amp;nbsp;源码来自wb98.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;this.itemList.splice(index,&amp;nbsp;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;this.itemList&amp;nbsp;=&amp;nbsp;[...this.itemList];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;addItem()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.itemList&amp;nbsp;=&amp;nbsp;[...this.itemList,&amp;nbsp;`Item${this.itemList.length&amp;nbsp;+&amp;nbsp;1}`];
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;新增一项&amp;nbsp;+&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.addItem()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;全部删除&amp;nbsp;-&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.itemList=[]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ForEach(this.itemList,&amp;nbsp;(item:&amp;nbsp;string,&amp;nbsp;index:&amp;nbsp;number)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListItem()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(item).fontSize(30).width(&amp;#39;100%&amp;#39;).backgroundColor(Color.White)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.swipeAction({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end:&amp;nbsp;{//右向左划
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;builder:&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.deleteItem(index)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp;(item:&amp;nbsp;string)&amp;nbsp;=&amp;gt;&amp;nbsp;item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.padding(10)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(0xDCDCDC)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.layoutWeight(1)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 10 Jul 2025 21:07:54 +0800</pubDate></item><item><title>获取状态栏，导航栏的高度</title><link>https://wb98.com/post/387.html</link><description>&lt;p&gt;有2种方式来获取状态栏和导航栏的高度。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;一、在 Ability 中获取并全局存储，然后在页面调用。&lt;/p&gt;&lt;p&gt;适用于需要多次调用高度的场景，通过 PersistentStorage 存储获取结果：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;//&amp;nbsp;EntryAbility.ets
import&amp;nbsp;{&amp;nbsp;window,&amp;nbsp;common&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@kit.ArkUI&amp;#39;;

onWindowStageCreate(windowStage:&amp;nbsp;window.WindowStage)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;windowStage.getMainWindow().then((win)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;获取系统规避区域
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;systemArea1&amp;nbsp;=&amp;nbsp;win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;systemArea2&amp;nbsp;=&amp;nbsp;win.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;statusBarHeight&amp;nbsp;=&amp;nbsp;systemArea1.topRect.height;&amp;nbsp;//&amp;nbsp;状态栏高度（px）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;navBarHeight&amp;nbsp;=&amp;nbsp;systemArea2.bottomRect.height;&amp;nbsp;//&amp;nbsp;导航栏高度（px）//源码来自wb98.com

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;存储到全局变量（需先定义PersistentStorage）
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PersistentStorage.PersistProp(&amp;#39;statusBarHeight&amp;#39;,&amp;nbsp;px2vp(statusBarHeight));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PersistentStorage.PersistProp(&amp;#39;navBarHeight&amp;#39;,&amp;nbsp;px2vp(navBarHeight));
&amp;nbsp;&amp;nbsp;});
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;在页面中通过 AppStorage.get 使用存储值：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;@Entry
@Component
struct&amp;nbsp;Index&amp;nbsp;{

&amp;nbsp;&amp;nbsp;//&amp;nbsp;页面组件内调用
&amp;nbsp;&amp;nbsp;@StorageLink(&amp;#39;statusBarHeight&amp;#39;)&amp;nbsp;statusBarHeight:&amp;nbsp;number&amp;nbsp;=&amp;nbsp;0;
&amp;nbsp;&amp;nbsp;@StorageLink(&amp;#39;navBarHeight&amp;#39;)&amp;nbsp;navBarHeight:&amp;nbsp;number&amp;nbsp;=&amp;nbsp;0;

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.statusBarHeight.toString())&amp;nbsp;//状态栏高度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.navBarHeight.toString())&amp;nbsp;&amp;nbsp;&amp;nbsp;//导航栏高度

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;!--more--&gt;&lt;p&gt;二、在 UI 组件中动态获取&lt;/p&gt;&lt;p&gt;适用于单次获取的场景：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;import&amp;nbsp;{&amp;nbsp;window&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@kit.ArkUI&amp;#39;;

@Entry
@Component
struct&amp;nbsp;Index&amp;nbsp;{
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;height1:&amp;nbsp;number&amp;nbsp;=&amp;nbsp;0
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;height2:&amp;nbsp;number&amp;nbsp;=&amp;nbsp;0

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.height1.toString())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.height2.toString())

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;获取高度&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.getLastWindow(getContext(this)).then((win)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;systemArea1&amp;nbsp;=&amp;nbsp;win.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;systemArea2&amp;nbsp;=&amp;nbsp;win.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;statusBarHeight&amp;nbsp;=&amp;nbsp;px2vp(systemArea1.topRect.height);&amp;nbsp;//状态栏高度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;navBarHeight&amp;nbsp;=&amp;nbsp;px2vp(systemArea2.bottomRect.height);&amp;nbsp;//导航栏高度&amp;nbsp;//源码来自wb86.com

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.height1&amp;nbsp;=&amp;nbsp;statusBarHeight
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.height2&amp;nbsp;=&amp;nbsp;navBarHeight
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;this.height2&amp;nbsp;=&amp;nbsp;navBarHeight&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;?&amp;nbsp;navBarHeight&amp;nbsp;:&amp;nbsp;statusBarHeight&amp;nbsp;//导航栏高度有时获取的值为0,就赋值状态栏一样的数值。

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 10 Jul 2025 16:21:41 +0800</pubDate></item><item><title>用属性更新器来设置属性 arkts</title><link>https://wb98.com/post/386.html</link><description>&lt;p&gt;代码如下，如果在预览器测试，如果测试出现问题，重新启动一下预览器可解决问题，我在测试过程中遇到过此情况。&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;import&amp;nbsp;{&amp;nbsp;AttributeUpdater&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@ohos.arkui.modifier&amp;#39;&amp;nbsp;//&amp;nbsp;属性更新器&amp;nbsp;-&amp;nbsp;源码来自&amp;nbsp;wb98.com

//分别为按钮和文本组件建2个类
class&amp;nbsp;Mybutton1&amp;nbsp;extends&amp;nbsp;AttributeUpdater&amp;lt;ButtonAttribute&amp;gt;&amp;nbsp;{&amp;nbsp;//参数是&amp;nbsp;组件名+Attribute
&amp;nbsp;&amp;nbsp;//&amp;nbsp;首次绑定时触发initializeModifier方法，进行属性初始化---不初始化，也没事，绑定这个空类就可以很自由地设置组件的属性
&amp;nbsp;&amp;nbsp;initializeModifier(instance:&amp;nbsp;ButtonAttribute):&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;50%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(30)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(Color.Red)
&amp;nbsp;&amp;nbsp;}
}

class&amp;nbsp;MyText1&amp;nbsp;extends&amp;nbsp;AttributeUpdater&amp;lt;TextAttribute&amp;gt;&amp;nbsp;{//空，属性设置不初始化
}

@Entry
@Component
struct&amp;nbsp;Page8&amp;nbsp;{
&amp;nbsp;button1:&amp;nbsp;Mybutton1&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Mybutton1();
&amp;nbsp;text1:MyText1=new&amp;nbsp;MyText1()

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(&amp;#39;确定&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.attributeModifier(this.button1)//动态设置组件的属性方法,这里要绑定
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;下面就就是设置属性
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.button1.attribute?.backgroundColor(Color.Green).fontColor(Color.Blue)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontSize(50).offset({&amp;nbsp;x:&amp;nbsp;100&amp;nbsp;}).height(100)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(&amp;#39;文本组件&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.attributeModifier(this.text1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.text1.attribute?.backgroundColor(Color.Pink).fontSize(33).margin(50).borderRadius(10)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 09 Jul 2025 10:44:00 +0800</pubDate></item><item><title>自定义单选框组件</title><link>https://wb98.com/post/385.html</link><description>&lt;p&gt;封装前的代码：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;import&amp;nbsp;{&amp;nbsp;promptAction&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@kit.ArkUI&amp;#39;

@Entry
@Component
struct&amp;nbsp;Page2&amp;nbsp;{
&amp;nbsp;&amp;nbsp;suzu:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[&amp;#39;中国&amp;#39;,&amp;nbsp;&amp;#39;美国&amp;#39;,&amp;nbsp;&amp;#39;英国&amp;#39;,&amp;nbsp;&amp;#39;法国&amp;#39;,&amp;nbsp;&amp;#39;俄罗斯&amp;#39;]
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;setSele:&amp;nbsp;Array&amp;lt;boolean&amp;gt;&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Array(this.suzu.length).fill(false)

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{&amp;nbsp;//----------源码来自&amp;nbsp;wb98.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ForEach(this.suzu,&amp;nbsp;(item:&amp;nbsp;string,&amp;nbsp;index:&amp;nbsp;number)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListItem()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Radio({&amp;nbsp;value:&amp;nbsp;item&amp;nbsp;+&amp;nbsp;&amp;#39;1&amp;#39;,&amp;nbsp;group:&amp;nbsp;&amp;#39;group1&amp;#39;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.checked(this.setSele[index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onChange((value:&amp;nbsp;boolean)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(String(value))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.setSele[index]&amp;nbsp;=&amp;nbsp;value
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;promptAction.showToast({&amp;nbsp;message:&amp;nbsp;&amp;#39;我是:&amp;#39;&amp;nbsp;+&amp;nbsp;item&amp;nbsp;+&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;&amp;nbsp;+&amp;nbsp;index&amp;nbsp;})&amp;nbsp;//点击处报告
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.focusable(false)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;promptAction.showToast({&amp;nbsp;message:&amp;nbsp;&amp;#39;我是:&amp;#39;&amp;nbsp;+&amp;nbsp;item&amp;nbsp;+&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;&amp;nbsp;+&amp;nbsp;index&amp;nbsp;})&amp;nbsp;//点击处报告
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;this.setSele.length;&amp;nbsp;i++)&amp;nbsp;{&amp;nbsp;//设置问题转为处理数组问题，所以必须先定义一个跟源大小相一致的数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i&amp;nbsp;==&amp;nbsp;index)&amp;nbsp;{&amp;nbsp;//设置单选框
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.setSele[i]&amp;nbsp;=&amp;nbsp;!this.setSele[i]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.setSele[i]&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(30)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(200)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;//------------
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;封装后的代码：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;import&amp;nbsp;{&amp;nbsp;promptAction&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@kit.ArkUI&amp;#39;

@Entry
@Component
struct&amp;nbsp;Page2&amp;nbsp;{
&amp;nbsp;&amp;nbsp;suzu:&amp;nbsp;string[]&amp;nbsp;=&amp;nbsp;[&amp;#39;中国&amp;#39;,&amp;nbsp;&amp;#39;美国&amp;#39;,&amp;nbsp;&amp;#39;英国&amp;#39;,&amp;nbsp;&amp;#39;法国&amp;#39;,&amp;nbsp;&amp;#39;俄罗斯&amp;#39;]
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;setSele:&amp;nbsp;Array&amp;lt;boolean&amp;gt;&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Array(this.suzu.length).fill(false)

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column({&amp;nbsp;space:&amp;nbsp;10&amp;nbsp;})&amp;nbsp;{&amp;nbsp;//----------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ForEach(this.suzu,&amp;nbsp;(item:&amp;nbsp;string,&amp;nbsp;index:&amp;nbsp;number)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListItem()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mydiyRadio({&amp;nbsp;item:&amp;nbsp;item,&amp;nbsp;setSele:&amp;nbsp;this.setSele,&amp;nbsp;index:&amp;nbsp;index&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;//------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(30)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(200)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.alignItems(HorizontalAlign.Start)
&amp;nbsp;&amp;nbsp;}
}

//=============自定义单选框组件,源码来自&amp;nbsp;wb98.com
@Component
struct&amp;nbsp;mydiyRadio&amp;nbsp;{
&amp;nbsp;&amp;nbsp;item:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;setSele:&amp;nbsp;boolean[]&amp;nbsp;=&amp;nbsp;[]
&amp;nbsp;&amp;nbsp;index:&amp;nbsp;number&amp;nbsp;=&amp;nbsp;0

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Row()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Radio({&amp;nbsp;value:&amp;nbsp;&amp;#39;radio1&amp;#39;,&amp;nbsp;group:&amp;nbsp;&amp;#39;group2&amp;#39;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.checked(this.setSele[this.index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onChange((value:&amp;nbsp;boolean)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.setSele[this.index]&amp;nbsp;=&amp;nbsp;value&amp;nbsp;//直接点击多选框，就要让数组同步
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;promptAction.showToast({&amp;nbsp;message:&amp;nbsp;&amp;#39;选中的是:&amp;#39;&amp;nbsp;+&amp;nbsp;this.item&amp;nbsp;+&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;&amp;nbsp;+&amp;nbsp;this.index&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.item)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.focusable(false)//&amp;nbsp;.backgroundColor(this.color1[index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.onClick(()&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;promptAction.showToast({&amp;nbsp;message:&amp;nbsp;&amp;#39;新是:&amp;#39;&amp;nbsp;+&amp;nbsp;this.item&amp;nbsp;+&amp;nbsp;&amp;#39;&amp;nbsp;&amp;#39;&amp;nbsp;+&amp;nbsp;this.index&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;this.setSele.length;&amp;nbsp;i++)&amp;nbsp;{&amp;nbsp;//设置问题转为处理数组问题，所以必须先定义一个跟源大小相一致的数组
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(i&amp;nbsp;==&amp;nbsp;this.index)&amp;nbsp;{&amp;nbsp;//设置单选框
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.setSele[i]&amp;nbsp;=&amp;nbsp;!this.setSele[i]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.setSele[i]&amp;nbsp;=&amp;nbsp;false
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 08 Jul 2025 22:02:07 +0800</pubDate></item><item><title>响应式布局之媒体查询布局：横屏与竖屏状态的监控,arkts</title><link>https://wb98.com/post/379.html</link><description>&lt;p&gt;将上篇文章修改一下，用于媒体查询之监控横屏与竖屏状态。代码如下：&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;import&amp;nbsp;{&amp;nbsp;mediaquery&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@kit.ArkUI&amp;#39;;&amp;nbsp;//导入媒体查询模块

@Entry
@Component
struct&amp;nbsp;Page8&amp;nbsp;{
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;message:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;backColor:&amp;nbsp;Color&amp;nbsp;=&amp;nbsp;Color.White
&amp;nbsp;&amp;nbsp;//通过&amp;nbsp;matchMediasync&amp;nbsp;接口设置媒体查询条件
&amp;nbsp;&amp;nbsp;//横屏条件&amp;nbsp;--&amp;nbsp;源码来自&amp;nbsp;wb98.com
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listener0:&amp;nbsp;mediaquery.MediaQueryListener&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.getUIContext().getMediaQuery().matchMediaSync(&amp;#39;(orientation:&amp;nbsp;landscape)&amp;#39;)
&amp;nbsp;&amp;nbsp;//竖屏条件
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listener9:&amp;nbsp;mediaquery.MediaQueryListener&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.getUIContext().getMediaQuery().matchMediaSync(&amp;#39;(orientation:&amp;nbsp;portrait)&amp;#39;)

&amp;nbsp;&amp;nbsp;aboutToAppear():&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//所有监听绑定事件
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener0.on(&amp;#39;change&amp;#39;,&amp;nbsp;(result:&amp;nbsp;mediaquery.MediaQueryResult)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(result.matches)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.backColor&amp;nbsp;=&amp;nbsp;Color.Yellow
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;&amp;#39;landscape&amp;nbsp;横屏&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener9.on(&amp;#39;change&amp;#39;,&amp;nbsp;(result:&amp;nbsp;mediaquery.MediaQueryResult)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(result.matches)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.backColor&amp;nbsp;=&amp;nbsp;Color.Green
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;&amp;#39;portrait&amp;nbsp;竖屏&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;aboutToDisappear():&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//解绑监听
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener0.off(&amp;#39;change&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener9.off(&amp;#39;change&amp;#39;)
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontSize(50)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontWeight(FontWeight.Medium)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(this.backColor)

&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 07 Jul 2025 14:11:55 +0800</pubDate></item><item><title>一多开发，响应式布局之媒体查询布局，宽度监控，arkts</title><link>https://wb98.com/post/378.html</link><description>&lt;p&gt;在实际应用开发过程中，开发者常常需要针对不同类型设备或同一类型设备的不同状态来修改应用的样式。媒体查询提供了丰富的媒体特征监听能力，可以监听应用显示区域变化、横竖屏、深浅色、设备类型等等，因此在应用开发过程中使用的非常广泛。&lt;/p&gt;&lt;p&gt;下面是媒体查询，监控宽度的变化。石川，arkts，鸿蒙，wb98.com&lt;/p&gt;&lt;pre class=&quot;brush:js;toolbar:false&quot;&gt;import&amp;nbsp;{&amp;nbsp;mediaquery&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&amp;#39;@kit.ArkUI&amp;#39;;&amp;nbsp;//导入媒体查询模块

@Entry
@Component
struct&amp;nbsp;Page8&amp;nbsp;{
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;message:&amp;nbsp;string&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;
&amp;nbsp;&amp;nbsp;@State&amp;nbsp;backColor:&amp;nbsp;Color&amp;nbsp;=&amp;nbsp;Color.White
&amp;nbsp;&amp;nbsp;//通过&amp;nbsp;matchMediasync&amp;nbsp;接口设置媒体查询条件
&amp;nbsp;&amp;nbsp;//屏幕尺寸在320到600,sm,手机竖屏为sm,横屏就是md
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listener:&amp;nbsp;mediaquery.MediaQueryListener&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.getUIContext().getMediaQuery().matchMediaSync(&amp;#39;(600vp&amp;gt;width&amp;gt;320vp)&amp;#39;)
&amp;nbsp;&amp;nbsp;//&amp;nbsp;屏幕尺寸小于320，xs,智能手表
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listener1:&amp;nbsp;mediaquery.MediaQueryListener&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.getUIContext().getMediaQuery().matchMediaSync(&amp;#39;(width&amp;lt;320vp)&amp;#39;)
&amp;nbsp;&amp;nbsp;//&amp;nbsp;屏幕尺寸大于600，md,平板
&amp;nbsp;&amp;nbsp;private&amp;nbsp;listener2:&amp;nbsp;mediaquery.MediaQueryListener&amp;nbsp;=
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.getUIContext().getMediaQuery().matchMediaSync(&amp;#39;(width&amp;gt;600vp)&amp;#39;)

&amp;nbsp;&amp;nbsp;aboutToAppear():&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//所有监听绑定事件&amp;nbsp;-&amp;nbsp;wb98.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener.on(&amp;#39;change&amp;#39;,&amp;nbsp;(result:&amp;nbsp;mediaquery.MediaQueryResult)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(result.matches)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.backColor&amp;nbsp;=&amp;nbsp;Color.Yellow
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;&amp;#39;sm&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener1.on(&amp;#39;change&amp;#39;,&amp;nbsp;(result:&amp;nbsp;mediaquery.MediaQueryResult)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(result.matches)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.backColor&amp;nbsp;=&amp;nbsp;Color.Red
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;&amp;#39;xs&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener2.on(&amp;#39;change&amp;#39;,&amp;nbsp;(result:&amp;nbsp;mediaquery.MediaQueryResult)&amp;nbsp;=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(result.matches)&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.backColor&amp;nbsp;=&amp;nbsp;Color.Green
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.message&amp;nbsp;=&amp;nbsp;&amp;#39;md&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;aboutToDisappear():&amp;nbsp;void&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//解绑监听&amp;nbsp;-&amp;nbsp;wb86.com
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener.off(&amp;#39;change&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener1.off(&amp;#39;change&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.listener2.off(&amp;#39;change&amp;#39;)
&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;build()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column()&amp;nbsp;{

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(this.message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontSize(50)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fontWeight(FontWeight.Medium)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.width(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.height(&amp;#39;100%&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.backgroundColor(this.backColor)

&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 07 Jul 2025 11:27:18 +0800</pubDate></item></channel></rss>