You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Just Audio遇_TypeError:Null无法转为MediaItem,请求文档支持

Just Audio调用setAudioSource触发_TypeError:Null不能转为MediaItem

我基于Just Audio的示例完成了应用开发,现在需要添加背景音乐功能。参照Ryan Heise的简易播放器示例实现后,执行代码await musicPlayer.setAudioSource(AudioSource.uri(Uri.parse(url)));时触发了_TypeError (type 'Null' is not a subtype of type 'MediaItem' in type cast)异常。

出错代码

播放背景音乐函数

Future<void> playBackgroundMusic() async {
    int rng = Random().nextInt(7);
    // Inform the operating system of our app's audio attributes etc.
    // We pick a reasonable default for an app that plays speech.
    final session = await AudioSession.instance;
    await session.configure(const AudioSessionConfiguration.speech());
    String musicFilename = filenameList[rng];
    String url =
        "MY_SERVER/music/$musicFilename";
    final musicPlayer = AudioPlayer();
    try {
          await musicPlayer.setAudioSource(AudioSource.uri(Uri.parse(url)));
    } on PlayerException catch (e) {
      print("Error loading audio source: $e");
    }
    musicPlayer.play();
  }

函数调用位置(initState)

@override
void initState() {
    super.initState();
    playBackgroundMusic();
}

已找到的解决方法

通过参考类似问题,我导入Audio Service并为AudioSource.uri添加tag参数(传入MediaItem实例)后解决了问题,修改后的代码片段如下:

AudioSource.uri( 
  Uri.parse(item.music), 
  tag: MediaItem( 
    id: "${item.id}", 
    album: "${musicImage}", 
    title: "${item.name}", 
    artUri: Uri.parse('${musicImage}'), 
  ), 
),

疑问与请求

但Just Audio的官方文档中并未提及必须添加tag参数的要求,此前我提交的相关GitHub issue因描述不够具体未得到解决。现请求指引相关的官方文档内容,或者建议更新Just Audio的文档以明确这一要求。

内容的提问来源于stack exchange,提问作者rjapenga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:42:42