Flutter audio_service:AudioService.browsableRootId相关技术疑问
关于AudioService.browsableRootId的疑问解答
1. AudioService.browsableRootId的具体含义
它是audio_service库定义的根节点标识符,相当于媒体库的顶层入口,类比文件系统里的根目录。所有可浏览的媒体分类(比如专辑、歌手、播放列表)都从这个根节点延伸展开。
在你提供的代码示例中,items这个Map以它作为key,对应的value是包含"Albums"的MediaItem列表,这就是在告诉audio_service:媒体库的顶层入口下,第一个可导航的分类是专辑列表。
2. 是否指代某一特定专辑?
完全不是。它只是一个抽象的顶层入口标识,不对应任何具体的媒体内容(比如专辑、歌曲)。示例里它下属的MediaItem(id: albumsRootId)才是指向专辑分类的节点,真正的专辑内容(比如"Science Friday"专辑里的歌曲)是存在albumsRootId对应的列表中的。
3. 为何下属MediaItem的id属性是普通字符串而非URL?
这里要区分两种MediaItem的作用:
- 可浏览导航节点:比如代码里的"Albums"项,
playable设为false,它的作用是作为导航入口,不是用来播放的。所以它的id只需要是能唯一标识这个分类的普通字符串(比如示例里的albumsRootId = 'albums')即可,不需要音频文件的URL。 - 可播放媒体项:列表里那些带URL的MediaItem,默认
playable为true,它们的id必须是音频资源的实际地址,这样播放器才能定位到对应的音频文件进行播放。
简言之,id的格式取决于MediaItem的用途:导航用唯一标识字符串,播放用音频资源URL。
代码示例参考
class MediaLibrary { static const albumsRootId = 'albums'; final items = <String, List<MediaItem>>{ AudioService.browsableRootId: const [ MediaItem( id: albumsRootId, title: "Albums", playable: false, ), ], albumsRootId: [ MediaItem( id: 'https://s3.amazonaws.com/scifri-episodes/scifri20181123-episode.mp3', album: "Science Friday", title: "A Salute To Head-Scratching Science", artist: "Science Friday and WNYC Studios", duration: const Duration(milliseconds: 5739820), artUri: Uri.parse( 'https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg'), ), MediaItem( id: 'https://s3.amazonaws.com/scifri-segments/scifri201711241.mp3', album: "Science Friday", title: "From Cat Rheology To Operatic Incompetence", artist: "Science Friday and WNYC Studios", duration: const Duration(milliseconds: 2856950), artUri: Uri.parse( 'https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg'), ), MediaItem( id: 'https://s3.amazonaws.com/scifri-segments/scifri202011274.mp3', album: "Science Friday", title: "Laugh Along At Home With The Ig Nobel Awards", artist: "Science Friday and WNYC Studios", duration: const Duration(milliseconds: 1791883), artUri: Uri.parse( 'https://media.wnyc.org/i/1400/1400/l/80/1/ScienceFriday_WNYCStudios_1400.jpg'), ), ], }; }
内容的提问来源于stack exchange,提问作者Yogesh Dubey
相关产品推荐
相关产品推荐

