HarmonyOS 鸿蒙Next 调用半模态会有两个弹窗

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 调用半模态会有两个弹窗

调用半模态会有两个弹窗

show用的是双向绑定

使用系统自带的关闭按钮会出现关两次弹窗的情况和下滑关闭一致

直接修改Show状态的话则没有异常,这种情况要怎么修改

2 回复
@Entry
@Component
export struct second {
  @State currentIdx: number = 0
  arr: number[] = [1, 2, 3, 4]
  @State isHoverText: Array<boolean> = new Array<boolean>(this.arr.length).fill(false)
  @Builder myBuilder() {
    Column() {
      Button('content1')
      .margin(10)
        .fontSize(20)
      Button("content2")
        .margin(10)
        .fontSize(20)
        .onClick(()=>{
          //根据保存的currentIdx  自定义按钮关闭
          this.isHoverText[this.currentIdx] = false;
        })
    }
    .width('100%')
  }
  build() {
    Column() {
      ForEach(this.arr, (item: number, idx: number) => {
        Row(){
          Text('银行卡')
          Button('立减14元')
          .onClick(() => {
            this.currentIdx=idx
            this.isHoverText[idx] = true;
          })
            .fontSize(15)
            .margin(10)
            .bindSheet(this.isHoverText[idx], this.myBuilder(), {
              backgroundColor:Color.Gray,
              height: SheetSize.MEDIUM,
              showClose: false,//不显示默认关闭按钮
              onDisappear: () => {
                this.isHoverText[idx] = false;
              }
            })
          Checkbox()
        }.border({width: 1, radius: 5})
      })
    }
    .justifyContent(FlexAlign.Start)
    .width('100%')
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 调用半模态会有两个弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next在调用半模态弹窗时,若出现两个弹窗的问题,通常是由于弹窗管理逻辑或事件处理不当导致。

可能原因包括:

  1. 弹窗重复触发:在代码中可能存在多次调用弹窗接口的情况,导致弹窗多次显示。检查触发弹窗的代码逻辑,确保弹窗只在需要时触发一次。

  2. 弹窗栈管理不当:鸿蒙系统的弹窗管理可能依赖于一个弹窗栈,如果弹窗没有正确关闭或出栈,可能会导致新的弹窗显示时,旧的弹窗仍保留在屏幕上。确保每次打开新弹窗后,适时关闭不再需要的弹窗。

  3. 异步处理不当:如果弹窗的显示是在异步任务中处理的,可能会因为异步任务的执行顺序或时间差导致弹窗显示异常。检查异步任务的处理逻辑,确保弹窗的显示和关闭操作在正确的时机进行。

解决这类问题,通常需要仔细检查弹窗的调用和关闭逻辑,确保弹窗的显示和关闭操作是正确且合理的。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部