HarmonyOS slider绑定滑动手势,手势回调里的event.fingerList数组长度是2,但是第一个元素是null,导致应用crash

相关代码

@Entry
@Component
export struct List0FailComponent {
  @State redVisibility: Visibility = Visibility.None
  build() {
    Column() {
      Text("slider")
        .gesture(LongPressGesture({ fingers: 1, repeat: false, duration: 500 })
          .onAction((event) => {
            this.redVisibility = (this.redVisibility == Visibility.Visible) ? Visibility.None : Visibility.Visible
          })
          .onActionEnd(() => {
            this.redVisibility = (this.redVisibility == Visibility.Visible) ? Visibility.None : Visibility.Visible
          }))
      Stack() {
        Slider({
          min: 0,
          max: 100
        })
          .gesture(PanGesture()
            .onActionStart((event) => {
              console.log('--- ' + JSON.stringify(event.fingerList));
              let x = event.fingerList[0].localX
            }))
          .width('100%')
          .height(100)
        Stack()
          .width('100%')
          .height(100)
          .backgroundColor('red')
          .visibility(this.redVisibility)
      }
      .margin({ top: 200})
    }
  }
}

问题复现手段

通过两个手指来操作,一个手指长按“slider”文本,待红色stack快要盖住slider之前,另一个手指滑动slider。可能有点不好复现,比较考验手速!

app直接crash,日志如下

Error message:Cannot read property localX of undefined
SourceCode:
  let x = event.fingerList[0].localX;
^
Stacktrace:
  at anonymous (entry/src/main/ets/pages/ListTest.ets:31:23)

通过打印日志,可以看到event.fingerList的结构是这样的

[null,{"id":1,"globalX":66.39462984525241, ...]
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

增加判空处理,接口文档中有说明:手指索引编号与位置对应,即fingerList[index]的id为index。先按下且未参与当前手势触发的手指在fingerList中对应位置为空。

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-gesture-settings-V5#gestureevent%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8E

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS List第一个可见ListItem
439浏览 • 1回复 待解决
HarmonyOS fingerList[0]获取为空导致crash
221浏览 • 1回复 待解决
HarmonyOS 如何返回路由第一个视图
177浏览 • 1回复 待解决
手势滑动退出HarmonyOS应用规格
178浏览 • 1回复 待解决
HarmonyOS FrameNode手势检测crash
23浏览 • 1回复 待解决
HarmonyOS 如何实现手势密码功能
729浏览 • 1回复 待解决
HarmonyOS动手势距离单位是什么
281浏览 • 1回复 待解决
HarmonyOS 图片组件手势滑动
24浏览 • 1回复 待解决