【发布时间】:2021-10-27 11:03:18
【问题描述】:
最近我决定通过构建一个具有音频功能的应用来提高我的技能。 所以我遇到了这些很酷的依赖项 just_audio 和 audio_service,但它的使用显示错误,我不知道出了什么问题。
下面是我的代码
import 'dart:async';
import 'package:audio_service/audio_service.dart';
import 'package:just_audio/just_audio.dart';
MediaControl playControl = MediaControl(
androidIcon: 'drawable/ic_action_play_arrow',
label: 'Play',
action: MediaAction.play,
);
MediaControl pauseControl = MediaControl(
androidIcon: 'drawable/ic_action_pause',
label: 'Pause',
action: MediaAction.pause,
);
MediaControl skipToNextControl = MediaControl(
androidIcon: 'drawable/ic_action_skip_next',
label: 'Next',
action: MediaAction.skipToNext,
);
MediaControl skipToPreviousControl = MediaControl(
androidIcon: 'drawable/ic_action_skip_previous',
label: 'Previous',
action: MediaAction.skipToPrevious,
);
MediaControl stopControl = MediaControl(
androidIcon: 'drawable/ic_action_stop',
label: 'Stop',
action: MediaAction.stop,
);
class AudioPlayerTask extends BackgroundAudioTask {
//
var _queue = <MediaItem>[];
int _queueIndex = -1;
AudioPlayer _audioPlayer = new AudioPlayer();
late AudioProcessingState _skipState;
late bool _playing;
bool get hasNext => _queueIndex + 1 < _queue.length;
bool get hasPrevious => _queueIndex > 0;
MediaItem get mediaItem => _queue[_queueIndex];
late StreamSubscription<AudioPlaybackState> _playerStateSubscription;
late StreamSubscription<AudioPlaybackEvent> _eventSubscription;
@override
void onStart(Map<String, dynamic> params) {
super.onStart(params);
}
@override
void onPlay() {}
@override
void onPause() {}
@override
void onSkipToNext() async {}
@override
void onSkipToPrevious() {}
void skip(int offset) async {}
@override
Future<void> onStop() async {}
@override
void onSeekTo(Duration position) {}
@override
void onClick(MediaButton button) {}
@override
Future<void> onFastForward() async {}
@override
Future<void> onRewind() async {}
_handlePlaybackComplete() {
//
}
}
兴趣依赖
just_audio: ^0.9.7
audio_service: ^0.17.1
http: ^0.13.3
得到了什么
从上图中,您会看到以下是红色下划线
AudioPlaybackState、void onStart()、void onPlay()、void onPause()、void onSkipToNext() 、void onSkipToPrevious()、void onSeekTo(Duration position)、void onClick(MediaButton button)
问题是我无法将它们导入代码,例如 AudioPlaybackState 甚至不在显示的关键字列表中
当我将鼠标悬停在红色下划线周围时,我得到了以下信息
名称“AudioPlaybackState”不是类型,因此不能用作 类型参数。
当我将鼠标悬停在它周围时,每个相应的覆盖都得到以下内容
'AudioPlayerTask.onStart' ('void Function(Map
)') 不是“BackgroundAudioTask.onStart”的有效覆盖(“未来 函数(Map ?)').
到目前为止做了什么
- 升级我的 Flutter
- 无效并重新启动
- 颤振清洁
尽管我做了所有这些,问题仍然存在。
请问哪里做得不好?
【问题讨论】:
-
鼠标悬停在红线上会出现什么错误?
-
谢谢,我只是编辑问题,
-
当我悬停红线时,我得到了名称“AudioPlaybackState”不是类型,因此不能用作类型参数。
-
并为各自的覆盖得到了这个 'AudioPlayerTask.onStart' ('void Function(Map
)') 不是 'BackgroundAudioTask.onStart' 的有效覆盖( 'Future Function(Map ?)'). -
我认为问题在于被覆盖函数的返回类型。他们都返回期货,你只是返回无效。请尝试改变它。
标签: flutter flutter-dependencies