在 HarmonyOS 开发中,TextReader 可以和点击手势联动控制暂停/继续吗?

在 HarmonyOS 开发中,我想做一个点击文本可以控制朗读暂停和继续的功能。比如,用户第一次点击 Text 控件开始朗读,再次点击则暂停,再点击又继续。

我现在写的代码大致如下,但不太确定这样写是否会有冲突,尤其是暂停状态怎么判断:

@State isReading: boolean = false

Text('点击朗读或暂停')
  .gesture(
    TapGesture()
      .onAction(() => {
        if (this.isReading) {
          reader.pause()
        } else {
          reader.readText({ text: '你好,欢迎使用HarmonyOS开发体验' })
        }
        this.isReading = !this.isReading
      })
  )

请问这样写是否合理?有没有更推荐的交互方式?

阅读 600
1 个回答

据我所知,这种做法在逻辑上是可行的,不过 TextReader 暂停和继续控制需要配合 pause() 和 resume() 方法,同时注意状态一致性。

建议维护一个朗读状态变量,并结合 onComplete 或 onError 回调重置状态,避免暂停后直接再次 readText() 导致重读。

reader.readText({
  text: '你好',
  onComplete: () => this.isReading = false
})

另外,建议 UI 上也给用户一些视觉反馈,如显示“朗读中”或“已暂停”。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进