문제 설명
【NoSuchMethodError】audio_service가 initState에서 시작되지 않습니다 (【NoSuchMethodError】audio_service does not start in initState)
audio_service 패키지를 사용하여 iOS 앱에 대한 백그라운드 제어를 허용하려고 합니다. AudioService.start()
를 호출하면 NoSuchMethodError
가 가끔 발생합니다.
class _AudioServiceScreenState extends State<AudioServiceScreen> {
@override
void initState() {
super.initState();
Future(() async {
await AudioService.connect();
await start();
});
}
@override
void dispose() {
Future(() async {
await AudioService.disconnect();
});
super.dispose();
}
@override
Widget build(BuildContext context) {
///
}
Future<void> start() async {
print('start');
final success = await AudioService.start(
backgroundTaskEntrypoint: _backgroundTaskEntrypoint);
if (success) {
await updateQueue();
}
}
}
void _backgroundTaskEntrypoint() {
print('_backgroundTaskEntrypoint');
AudioServiceBackground.run(() => AudioPlayerTask());
}
class AudioPlayerTask extends BackgroundAudioTask {
@override
Future<void> onStart(Map<String, dynamic>? params) async {
print('onStart');
///
}
}
print() 이후
를 사용하면 디버그 콘솔에 start
가 표시됩니다. 그러나 _backgroundTaskEntrypoint
가 표시되지 않고 NoSuchMethodError
가 발생합니다.
구현 확인 Audio_service의 start()
에서 FlutterIsolate.spawn()
에서 오류가 발생할 것으로 예상합니다.
오류가 발생하지 않도록 하는 방법이 있습니까? 가끔 이런 일이 발생하는 이유는 무엇입니까?
참조 솔루션
방법 1:
Can you provide an output, I can only guess that it might be because of calling AudioService.start()
twice, when it is already running.
(by Kou Kimura、Ara Kurghinyan)