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

Flutter使用audio_service出现红色下划线无法导入类型怎么解决

错误原因
  • 核心问题是你参考的代码是audio_service旧版本的API实现,和你安装的0.17.1版本不匹配:
    1. AudioPlaybackState是audio_service 0.16及更早版本的类,0.17版本后已经移除该类型,同时新版just_audio的状态监听类已改为PlayerState
    2. BackgroundAudioTask的核心方法签名在0.17版本做了空安全和返回值调整,比如onStart要求返回Future且参数为可空类型,你写的返回void、参数非空不符合重写要求
解决方法

方案1:降级依赖适配现有代码(适合不想改动现有逻辑的场景)

直接修改pubspec.yaml的依赖版本为匹配旧API的版本,再执行flutter pub get即可:

just_audio: ^0.7.5
audio_service: ^0.16.2
http: ^0.13.3

方案2:修改代码适配新版API(推荐,可使用新版本功能)

需要对现有代码做以下调整:

  1. 修正所有重写方法的签名:
// onStart修改为
@override
Future<void> onStart(Map<String, dynamic>? params) async {
  super.onStart(params);
}
// onPlay、onPause、onSeekTo等原本返回void的方法,都调整为返回Future<void>
@override
Future<void> onPlay() async {}
@override
Future<void> onPause() async {}
@override
Future<void> onSeekTo(Duration position) async {}
  1. 替换不存在的类型:
// 把AudioPlaybackState替换为just_audio提供的PlayerState
late StreamSubscription<PlayerState> _playerStateSubscription;
  1. 原有AudioProcessingState的逻辑也要对应替换为audio_service新版的ProcessingState枚举,逻辑对齐即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:51:01