在 HarmonyOS 开发中,我想做一个点击文本可以控制朗读暂停和继续的功能。比如,用户第一次点击 Text 控件开始朗读,再次点击则暂停,再点击又继续。
我现在写的代码大致如下,但不太确定这样写是否会有冲突,尤其是暂停状态怎么判断:
@State isReading: boolean = false
Text('点击朗读或暂停')
.gesture(
TapGesture()
.onAction(() => {
if (this.isReading) {
reader.pause()
} else {
reader.readText({ text: '你好,欢迎使用HarmonyOS开发体验' })
}
this.isReading = !this.isReading
})
)
请问这样写是否合理?有没有更推荐的交互方式?
据我所知,这种做法在逻辑上是可行的,不过 TextReader 暂停和继续控制需要配合 pause() 和 resume() 方法,同时注意状态一致性。
建议维护一个朗读状态变量,并结合 onComplete 或 onError 回调重置状态,避免暂停后直接再次 readText() 导致重读。
另外,建议 UI 上也给用户一些视觉反馈,如显示“朗读中”或“已暂停”。