首页 > 解决方案 > 显示红色下划线的音频服务

问题描述

最近我决定通过构建一个具有音频功能的应用程序来提高我的技能。所以我遇到了这些很酷的 Dependencies just_audioaudio_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<String, dynamic>)') 不是 'BackgroundAudioTask.onStart' ('Future Function(Map<String, dynamic>?)') 的有效覆盖。

到目前为止做了什么

  1. 升级我的 Flutter
  2. 无效并重新启动
  3. 颤振清洁

尽管我做了所有这些,问题仍然存在。

请问什么做得不好?

标签: flutterflutter-dependencies

解决方案


经过多次谷歌搜索,我在一篇中篇文章找到了正确答案,这是链接点击这里

我最好的猜测是,在依赖项升级后,大部分术语不再使用。

它现在正在工作


推荐阅读