方案

一份播放数据多个地方需要用,因此又要用到AppStorageV2。

共享播放数据:

初始共享歌曲数据的类:

在models文件夹创建globalMusic.ets,放入接口内容。

在AvPlayerManager.ets中加入共享数据类型的对象:

之后将需要的信息存入对象即可。

歌曲时间实现

需要监听时长是否发生变化,Play页面渲染时间相关的数据。

AVPlayer继续监听时间的变化。

获取到的歌曲总时长和当前播放时间推送给共享播放数据,让播放器页面能够正常获取,但是这两个变量就需要新的装饰器进行装饰。可以查阅文档:@ObservedV2装饰器和@Trace装饰器:类属性变化观测-V2所属装饰器-状态管理(V2)-学习UI范式状态管理-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

@ObservedV2写在类上,@Trace写在类中的属性上。

@ObservedV2装饰器与@Trace装饰器用于装饰类以及类中的属性,使得被装饰的类和属性具有深度观测的能力。

因此GlobalMusic类需要加上: