Flutter使用audio_service出现红色下划线无法导入类型怎么解决
错误原因
- 核心问题是你参考的代码是
audio_service旧版本的API实现,和你安装的0.17.1版本不匹配:AudioPlaybackState是audio_service0.16及更早版本的类,0.17版本后已经移除该类型,同时新版just_audio的状态监听类已改为PlayerStateBackgroundAudioTask的核心方法签名在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(推荐,可使用新版本功能)
需要对现有代码做以下调整:
- 修正所有重写方法的签名:
// 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 {}
- 替换不存在的类型:
// 把AudioPlaybackState替换为just_audio提供的PlayerState late StreamSubscription<PlayerState> _playerStateSubscription;
- 原有
AudioProcessingState的逻辑也要对应替换为audio_service新版的ProcessingState枚举,逻辑对齐即可。
内容的提问来源于stack exchange,提问作者Zionnite
相关产品推荐
相关产品推荐

