HarmonyOS 6 PopoverDialogV2 跟手弹出框使用文档
2026/6/5 4:39:33 网站建设 项目流程

文章目录

    • 概述
    • 依赖导入
    • 核心结构:跟手弹出框
    • 配置详解
      • 1. 状态控制
      • 2. 弹出配置 PopoverDialogV2Options
      • 3. 弹框内容构建器 dialogBuilder
      • 4. 目标组件构建器 buttonBuilder
      • 5. 挂载跟手弹出框
    • 代码
    • 总结

概述

PopoverDialogV2是 DialogV2 系列中的跟手弹出框,可基于目标组件位置自动定向弹出,支持将 TipsDialogV2 / SelectDialogV2 / ConfirmDialogV2 / AlertDialogV2 / LoadingDialogV2 / CustomContentDialogV2 作为内部弹窗内容。


依赖导入

import{AlertDialogV2,PopoverDialogV2,PopoverDialogV2Options,AdvancedDialogV2Button}from'@kit.ArkUI';

核心结构:跟手弹出框

固定结构:

  1. visible:控制显示/隐藏(支持双向同步!!
  2. popover:弹出框配置(builder 指定内容)
  3. targetBuilder:目标组件(弹框依附的按钮/区域)
PopoverDialogV2({visible:显示状态!!,popover:弹出配置,targetBuilder:目标组件构建器})

配置详解

1. 状态控制

@LocalisShow:boolean=false;
  • isShow:控制跟手框显示/隐藏

2. 弹出配置 PopoverDialogV2Options

@LocalpopoverOptions:PopoverDialogV2Options={builder:()=>{this.dialogBuilder();}}
  • builder:指定弹框内容(必须用 @Builder 包装)

3. 弹框内容构建器 dialogBuilder

本例使用 AlertDialogV2 作为内容:

@BuilderdialogBuilder(){AlertDialogV2({content:'跟手弹出框',primaryButton:newAdvancedDialogV2Button({content:'取消',action:()=>{this.isShow=false;}}),secondaryButton:newAdvancedDialogV2Button({content:'确认',action:()=>{this.isShow=false;}})});}

4. 目标组件构建器 buttonBuilder

弹框依附于此按钮:

@BuilderbuttonBuilder(){Button('跟手弹出框目标组件').onClick(()=>{this.isShow=true;});}

5. 挂载跟手弹出框

PopoverDialogV2({visible:this.isShow!!,popover:this.popoverOptions,targetBuilder:()=>{this.buttonBuilder();}})
  • visible: this.isShow!!:双向同步显示状态(官方推荐写法)
  • popover:绑定弹框配置
  • targetBuilder:绑定目标按钮

代码

import{AlertDialogV2,PopoverDialogV2,PopoverDialogV2Options,AdvancedDialogV2Button}from'@kit.ArkUI';@Entry@ComponentV2struct Index{@LocalisShow:boolean=false;@LocalpopoverOptions:PopoverDialogV2Options={builder:()=>{this.dialogBuilder();}}@BuilderdialogBuilder(){AlertDialogV2({content:'跟手弹出框',primaryButton:newAdvancedDialogV2Button({content:'取消',action:()=>{this.isShow=false;},}),secondaryButton:newAdvancedDialogV2Button({content:'确认',action:()=>{this.isShow=false;},}),});}@BuilderbuttonBuilder(){Button('跟手弹出框目标组件').onClick(()=>{this.isShow=true;});}build(){Column(){PopoverDialogV2({visible:this.isShow!!,popover:this.popoverOptions,targetBuilder:()=>{this.buttonBuilder();},})}}}

运行效果如图:


总结

  1. API 版本:从API 18开始支持
  2. 适用模型:仅支持Stage 模型
  3. 设备限制不支持 Wearable 设备
  4. visible 建议使用 !! 实现双向同步,状态更稳定
  5. targetBuilder 必须使用 @Builder包装
  6. 内部可嵌套任意 DialogV2 弹窗(Alert/Tips/Select/Confirm/Custom 等)
  7. 关闭弹框只需将isShow = false
  8. 不建议设置通用属性,避免布局异常

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询