HarmonyOS NEXT星河版之自定义弹窗中变量与页面变量传递

鸿蒙HarmonyOS NEXT开发环境搭建与ArkTS实战 HarmonyOS NEXT是华为推出的新一代分布式操作系统,其核心开发语言ArkTS基于TypeScript扩展了声明式UI和状态管理能力。开发环境搭建需配置DevEco Studio IDE和HarmonyOS SDK,通过@State、@Prop等装饰器实现数据绑定,采用组件化架构提升代码复用率。在鸿蒙生态中,ArkTS面向对象特性与分布式能力结合,可高效开发跨设备应用。本文以新闻客户端为例,展示从环境配置到性能优化的全流程实践,涵盖状态管理、UI组件封装等核心开发场景,帮助开发者快速掌握Harmon 阅读详情

1. 使用组件的状态变量传递

@CustomDialog
struct CustomDialog01 {
  @Link inputValue: string;
  controller: CustomDialogController;

  build() {
    Column() {
      Text('Change text')
        .fontSize(20)
        .margin({ top: 10, bottom: 10 })

      TextInput({ placeholder: '', text: $$this.inputValue })
        .height(60)
        .width('90%')
    }

  }
}


@Entry
@Component
struct DialogDemo01Page {
  @State inputValue: string = 'click me';
  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialog01({
      inputValue: $inputValue
    })

  })

  build() {
    Column() {
      Button(this.inputValue)
        .onClick(() => {
          this.dialogController.open();
        })
        .backgroundColor(0x317aff)
    }
    .width('100%')
    .margin({ top: 5 })

  }
}

2. 方法回调

在初始化弹窗时,传递一个方法给自定义弹窗,在自定义弹窗中触发该方法,弹窗中变量作为方法的参数。

@CustomDialog
struct CustomDialog02 {
  private inputValue: string = ''
  changeInputValue: (val: string) => void = () => {}
  controller: CustomDialogController;

  build() {
    Column() {
      Text('Change text')
        .fontSize(20)
        .margin({ top: 10, bottom: 10 })

      TextInput({ placeholder: '', text: this.inputValue })
        .height(60)
        .width('90%')
        .onChange((value: string) => {
          this.changeInputValue(value);
        })
    }
  }

}

@Entry
@Component
struct DialogDemo2Page {
  @State inputValue: string = 'click me';

  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialog02({
      inputValue: this.inputValue,
      changeInputValue: (val: string) => {
        this.inputValue = val;
      }
    })
  })

  build() {
    Column() {
      Button(this.inputValue)
        .onClick(() => {
          this.dialogController.open();
        })
        .backgroundColor(0x317aff)
    }
    .width('100%')
    .margin({ top: 5 })
  }

}

3. AppStorage或LocalStorage

使用AppStorage或LocalStorage方式管理页面状态,实现自定义弹窗和页面之间状态的共享。

let storage = LocalStorage.getShared();

@CustomDialog
struct CustomDialog03 {
  @LocalStorageLink('inputVal') inputValue: string = '';
  controller: CustomDialogController;

  build() {
    Column() {
      Text('Change text')
        .fontSize(20)
        .margin({ top: 10, bottom: 10 })

      TextInput({ placeholder: '', text: this.inputValue })
        .height(60)
        .width('90%')
        .onChange((value: string) => {
          this.inputValue = value;
        })
    }
  }

}

@Entry(storage)
@Component
struct DialogDemo03 {
  @LocalStorageLink('inputVal') inputValue: string = 'click me';
  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialog03()
  });

  build() {
    Column() {
      Button(this.inputValue)
        .onClick(() => {
          this.dialogController.open();
        })
        .backgroundColor(0x317aff)
    }
    .width('100%')
    .margin({ top: 5 })
  }

}
【HarmonyOS NEXT】自定义弹窗(CustomDialog)弹出问题 弹框场景更推荐使用promptAction.openCustomDialog,后续弹框也主要是基于promptAction做演进。直接通过promptAction的openCustomDialog,入参为你自定义的builder控件。自定义弹窗(CustomDialog)在UI组件内调用可以正常弹出,封装到util工具类后无法弹出。2. 调用promptAction处的外部事件,如何和自定义builder内的事件做绑定。自定义弹窗 / CustomDialog / promptAction。 阅读详情

相关推荐

鸿蒙NEXT开发【自定义弹框使用(CustomDialog+TextPicker组合)】

做过移动端甚至前端开发的小伙伴想必用过弹窗功能,其实弹窗就是一种浮动窗口,主要用于在应用界面上显示额外的信息或提供用户操作选项。而在HarmonyOS开发中,弹窗分为七种类型:AlertDialog、ActionSheet、CustomDialog、CalendarPickerDialog、DatePickerDialog、TimePickerDialog和TextPickerDialog。其他六种弹窗是系统预定义的弹框,而剩下的CustomDialog弹窗是允许开发者自定义弹窗的布局和内容的。

houxiliOH的博客 2228

HarmonyOS自定义弹出对话框CustomDialog并传递变量

首先新建一个ets文件,使用CustomDialog装饰器定义一个自定义的dialog。其内部的语法和普通的Component是完全相同的,通过组合基础组件可以实现不同的布局。可能是手机端操作和PC端操作的差异导致的​。​然后在父组件中实例化CustomDialogController,并在builder属性中引用这个CustomDialog​。如果内置的弹窗不满足要求,可以基于CustomDialog自定义出各种个性化的反馈组件。注意需要传递的参数使用@Link进行修饰,在“实例化”的时候引用。

nopyramid的博客 3248

OpenHarmony实战开发-如何实现自定义弹窗 (CustomDialog)

CustomDialog是自定义弹窗,可用于广告、中奖、警告、软件更新等与用户交互响应操作。开发者可以通过CustomDialogController类显示自定义弹窗。

m0_70749039的博客 1698

鸿蒙开发之API version 10 如何声明全局变量

直接在EntryAbility.ets这个入口方法上方声明。API version 10 不能使用 var 所以使用。声明全局变量肯定是为了其他文件能够引用 所以使用。然后在其他的ets文件中,直接调用即可,会自动引用。比如声明一个UIAbility供外部调用。

qq_15509071的博客 1744

HarmonyOS Next开发学习手册——旋转屏动画增强

在原旋转屏动画基础上,可配置渐隐和渐现的转场效果。完整的代码示例和效果如下。需要在EntryAbility.ets文件的onWindowStageCreate方法中添加处理逻辑以获取屏幕的显示方向需要在项目的 module.json5 文件中的 abilities 列表里添加 “orientation”,指定为 “auto_rotation”

maniuT的博客 1103

鸿蒙next开发进阶:NavDestination弹窗

本案例介绍了使用NavDestination组件的Dialog模式实现与前一个页面的联动的评论弹窗。

m0_72493819的博客 1776

(0基础)鸿蒙HarmonyOS-NEXT开发入门—3

代码规范:function 函数名(){函数体。

zhaoguoguo111的博客 2200

保姆级教程:在树莓派5B上用AI Kit跑YOLOv8,实测134fps的完整配置流程

本文提供了一份详细的树莓派5B搭配AI Kit部署YOLOv8的教程,从硬件组装到模型转换、优化和部署,最终实现134FPS的高帧率推理性能。通过Hailo-8L AI加速模块和HEF模型转换,这套方案为边缘AI计算提供了强大支持,适用于智能监控、无人机视觉导航等应用场景。

weixin_28725407的博客 448

【HarmonyOS NEXT】如何实现底部弹窗动画

ArkTS如何实现类似Android通过在xml里设置<set><translate>属性,来控制dialog弹起收回的动画效果?类似首次使用华为帐号,dialog底部弹起及收回的动画。ArkTS / dialog / 弹起 / 收回 / 动画。

Mayism123的博客 1950

初级文章【西门子】字符拼接成字符串

针对S7-400极其以下PLC,1200往上据说有专门的块了呢,首先,我是不用库的,需要什么函数会自己写,OK进入正题。 首先,我们有一个DB块,里面有14个char,一个14位的char数组和一个14位的string。如下图。 我们的目的是将char1-char10拼接成一个string。 第一种方式:第一步,将char放进数组。 ​​​​​​​ 相信大家都能看明白,但是我还是要解释解释 L取值2 T赋值到临时变量DBNO(INT) OPN DB [#DBNO]获取DB块,这一句.

NS_Speak(IVAV) 1万+

从零搭建Python接口自动化测试框架:pytest+requests+Allure实战指南

接口自动化测试是现代软件工程中保障交付质量、提升测试效率的核心实践。其基本原理是通过脚本模拟客户端请求,对服务端接口进行自动化的功能验证、性能探测与回归测试,从而替代重复的手工操作。在技术实现上,Python凭借其简洁语法和丰富的生态,成为构建此类框架的主流选择,其中pytest测试框架、requests HTTP库和Allure报告工具构成了技术栈的黄金组合。这套技术方案的价值在于,它能将测试用例数据(如YAML文件)与执行逻辑分离,实现数据驱动测试,并通过持续集成(如Jenkins)无缝融入DevOps

weixin_31822733的博客 378

OpenHarmony实战开发-全局弹窗封装案例

本示例介绍两种弹窗的封装案例。一种是自定义弹窗封装成自定义组件的方式,使用一句代码即可控制显示;一种是使用子窗口的方式实现弹窗,使用一句代码即可展示。

2401_82546228的博客 1146

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码)

本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。

threejs5artist的博客 635

黑马视频HarmonyOS零基础

本文章是根据黑马程序员鸿蒙 HarmonyOS NEXT星河版零基础入门到实战00-鸿蒙开发环境准备_哔哩哔哩_bilibili记录HarmonyOS的基础。该视频真的非常适合有点了解前端的小伙伴学习,里面有很多最基础的东西。有的小伙伴看这个视频就非常的容易理解,直接看以下的笔记,认真过一遍就可以了。以下是我的练习仓库:HarmonyOS-learn: 对HarmonyOS的基础学习记录 (gitee.com)后续将持续更新该视频的笔记。

qq_59598977的博客 1790

ArcGIS Pro2.5深度学习使用注意事项

ArcGIS Pro2.5深度学习使用中的注意事项1、ArcGIS Pro2.5深度学习使用中的注意事项1.1、Label深度学习样本工具参数介绍1.2、准备数据参数介绍1.3、训练模型介绍1.4、ArcGIS Pro2.5深度学习推理工具和模型对应关系介绍1.4.1、Classify Objects Using Deep Learning1.4.2、Classify Pixels Using D...

GIS哼哈哈的博客 7200

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5100

HarmonyOS TS快速入门(八):真机调试配置与常见问题全攻略

在前七篇文章中,我们系统学习了 ArkTS 语法基础、UI 布局、状态管理、网络请求、数据持久化、动画与交互以及元服务开发。然而,模拟器终究无法完全替代真机——传感器数据、性能表现、系统权限、多设备协同等场景,只有在真实设备上才能得到准确验证。真机调试是鸿蒙应用开发从"Demo 演示"走向"生产交付"的关键分水岭。本文将围绕开发者模式开启 → HDC 工具配置 → 签名证书申请 → USB/无线调试 → 常见问题排查。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

保姆级教程:如何用Le2i Fall Detection Dataset训练你的跌倒检测模型(附数据集下载)

本文提供了一份详细的实战指南,教你如何使用Le2i Fall Detection Dataset训练跌倒检测模型。内容涵盖数据集的深度解析、预处理与工程化管道搭建、模型选择与训练策略,以及评估优化与部署考量,旨在帮助开发者从零构建高精度、可应用的跌倒检测系统。

assembly8low的博客 1288

详解Dialog(三)——自定义对话框视图及参数传递

前言:这篇文章是有关对话框的最后一篇了,最近工作是很忙,不过闲下来的时候也不想写博客,估计是累过头了,还好以前定了个任务,每个月必须写四篇,这才强制自己去一直更新,马总说过,梦想这东西还是要有的,万一实现了呢,趁在阿里的两年,努力! 相关文章: 1、《详解Dialog(一)——基础元素构建》 2、《详解Dialog(二)——有关列表的构建》 3、《详解Dialog(三)——自定义对话框视...

启舰 3万+

YOLO26涨点改进 | NeurIPS2025最佳论文!注意力改进篇| 引入Gated Attention门控注意力模块、太牛了!直接拯救了大模型的发展,助力目标检测、图像分割、图像分类有效涨点

本文提出了一种基于门控注意力机制(GatedAttention)的YOLO26模型改进方法。该方法在标准softmax注意力机制中引入头部特定的sigmoid门控,通过增强注意力机制使模型更聚焦于关键信息。实验表明,该模块能显著提升模型性能,特别是在复杂背景和密集目标场景中,同时减少无关区域关注并提高检测精度。门控机制引入的非线性和稀疏性不仅提升了推理效率,还改善了训练稳定性,使模型能采用更大学习率并增强扩展性。此外,该方法有效缓解了"注意力下沉"现象,增强了模型对长距离目标的感知能力。

Ai缝合怪、助力小伙伴高效发论文 652

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

鸿蒙开发0基础【固定样式弹出框】ArkUI

固定样式弹出框采用固定的布局格式,这使得开发者无需关心具体的显示布局细节,只需输入所需显示的文本内容,从而简化了使用流程,提升了便捷性。

zhenggaoxiao232的博客 735

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【HarmonyOS Next】鸿蒙应用实现弹框DialogHub详解

鸿蒙中实现弹框目前官方提供openCustomDialog和CustomDialog两种模式。UI强绑定的实现方式API已标注不推荐。推荐使用UI框架层预留挂靠节点的方式,即openCustomDialog。这两者的差别详见【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(一)DialogHub底层实现原理为,使用浮层OverlayManager➕半模态页面bindSheet来实现弹框。可以达到我们在传统Android和IOS开发中,弹框与页面生命周期绑定的效果(页面隐藏,弹框隐藏。

路漫漫亦无涯 1212

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解

1. 官方迭代过程为迭代过程表明,弹框的调用越来越便捷,与UI解耦,最终达到在纯逻辑中使用自定义弹出,弹框内容更新和生命周期可控,写法简洁。首先需要创建@CustomDialog装饰的自定义弹框布局,CustomDialogController来实现弹窗弹出和关闭。// CustomDialog可直接获取到dialogController// 定义事件回调给外部使用onClose?build() {Column() {Text('我是内容')// 点击关闭弹框@Entry。

路漫漫亦无涯 2047

鸿蒙:@ohos.promptAction (弹窗)

创建并显示文本提示框、对话框和操作菜单。

weixin_71403100的博客 4779

Want 拉起应用,传递参数,鸿蒙星河版NEXT,API(11)

显式Want通常用于在当前应用中启动已知的目标应用组件,通过提供目标应用组件所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标应用组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。是一种对象,用于在应用组件之间传递信息。二、拉起UIability。一、实例化上下文管理器。

xp1870069025的博客 802

鸿蒙开发——自定义组件的两种方式和全局、局部自定义构建函数和公共、局部样式的定义

鸿蒙开发——自定义组件的两种方式和全局、局部自定义构建函数和公共、局部样式的定义

一条小绵羊的博客 3594
上一篇: HarmonyOS NEXT星河版之实战商城App瀑布流(含加载更多)
下一篇: HarmonyOS NEXT中怎么理解HAR、HAP、HSP、App的关系
小洋人最happy
博客等级 码龄14年 1287粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值