refactor: audio player and youtube client in separate files

This commit is contained in:
Kingkor Roy Tirtho 2023-02-05 08:39:02 +06:00
parent a774817240
commit ac84942917
11 changed files with 19 additions and 24 deletions

View File

@ -6,6 +6,7 @@ import 'package:spotube/components/player/player_controls.dart';
import 'package:spotube/collections/routes.dart';
import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/playlist_queue_provider.dart';
import 'package:spotube/services/audio_player.dart';
import 'package:spotube/utils/platform.dart';
import 'package:window_manager/window_manager.dart';

View File

@ -20,11 +20,11 @@ import 'package:spotube/entities/cache_track.dart';
import 'package:spotube/collections/routes.dart';
import 'package:spotube/collections/intents.dart';
import 'package:spotube/models/logger.dart';
import 'package:spotube/provider/audio_player_provider.dart';
import 'package:spotube/provider/downloader_provider.dart';
import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/provider/youtube_provider.dart';
import 'package:spotube/services/audio_player.dart';
import 'package:spotube/services/pocketbase.dart';
import 'package:spotube/services/youtube.dart';
import 'package:spotube/themes/dark_theme.dart';
import 'package:spotube/themes/light_theme.dart';
import 'package:spotube/utils/platform.dart';
@ -147,7 +147,7 @@ void main(List<String> rawArgs) async {
return Downloader(
ref,
queueInstance,
yt: ref.watch(youtubeProvider),
yt: youtube,
downloadPath: ref.watch(
userPreferencesProvider.select(
(s) => s.downloadLocation,
@ -258,12 +258,11 @@ class SpotubeState extends ConsumerState<Spotube> with WidgetsBindingObserver {
ref.watch(userPreferencesProvider.select((s) => s.accentColorScheme));
final backgroundMaterialColor = ref
.watch(userPreferencesProvider.select((s) => s.backgroundColorScheme));
final player = ref.watch(audioPlayerProvider);
final youtube = ref.watch(youtubeProvider);
/// For enabling hot reload for audio player
useEffect(() {
return () {
player.dispose();
audioPlayer.dispose();
youtube.close();
};
}, []);

View File

@ -7,9 +7,9 @@ import 'package:spotube/extensions/video.dart';
import 'package:spotube/extensions/album_simple.dart';
import 'package:spotube/extensions/artist_simple.dart';
import 'package:spotube/models/track.dart';
import 'package:spotube/provider/playlist_queue_provider.dart';
import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/services/pocketbase.dart';
import 'package:spotube/services/youtube.dart';
import 'package:spotube/utils/platform.dart';
import 'package:spotube/utils/primitive_utils.dart';
import 'package:spotube/utils/service_utils.dart';

View File

@ -1,6 +0,0 @@
import 'package:audioplayers/audioplayers.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final audioPlayerProvider = Provider<AudioPlayer>((ref) {
return AudioPlayer();
});

View File

@ -13,7 +13,7 @@ import 'package:spotube/components/shared/dialogs/replace_downloaded_dialog.dart
import 'package:spotube/models/logger.dart';
import 'package:spotube/models/spotube_track.dart';
import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/provider/youtube_provider.dart';
import 'package:spotube/services/youtube.dart';
import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart' hide Comment;
@ -165,7 +165,7 @@ final downloaderProvider = ChangeNotifierProvider(
return Downloader(
ref,
queueInstance,
yt: ref.watch(youtubeProvider),
yt: youtube,
downloadPath: ref.watch(
userPreferencesProvider.select(
(s) => s.downloadLocation,

View File

@ -8,6 +8,7 @@ import 'package:spotube/models/spotube_track.dart';
import 'package:spotube/extensions/track.dart';
import 'package:spotube/provider/blacklist_provider.dart';
import 'package:spotube/provider/user_preferences_provider.dart';
import 'package:spotube/services/audio_player.dart';
import 'package:spotube/services/linux_audio_service.dart';
import 'package:spotube/services/mobile_audio_service.dart';
import 'package:spotube/utils/persisted_state_notifier.dart';
@ -16,9 +17,6 @@ import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart' hide Playlist;
import 'package:collection/collection.dart';
final audioPlayer = AudioPlayer();
final youtube = YoutubeExplode();
class PlaylistQueue {
final Set<Track> tracks;
final Set<Track> tempTracks;

View File

@ -1,4 +0,0 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
final youtubeProvider = Provider<YoutubeExplode>((ref) => YoutubeExplode());

View File

@ -0,0 +1,3 @@
import 'package:audioplayers/audioplayers.dart';
final audioPlayer = AudioPlayer();

View File

@ -6,6 +6,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:spotube/provider/dbus_provider.dart';
import 'package:spotube/models/spotube_track.dart';
import 'package:spotube/provider/playlist_queue_provider.dart';
import 'package:spotube/services/audio_player.dart';
import 'package:spotube/utils/type_conversion_utils.dart';
import 'package:window_manager/window_manager.dart';

View File

@ -4,11 +4,11 @@ import 'package:audio_service/audio_service.dart';
import 'package:audio_session/audio_session.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:spotube/provider/playlist_queue_provider.dart';
import 'package:spotube/services/audio_player.dart';
class MobileAudioService extends BaseAudioHandler {
AudioSession? session;
final PlaylistQueueNotifier playlistNotifier;
final PlaylistQueueNotifier playlistNotifier;
PlaylistQueue? get playlist => playlistNotifier.state;

View File

@ -0,0 +1,3 @@
import 'package:youtube_explode_dart/youtube_explode_dart.dart';
final youtube = YoutubeExplode();