preparation for moor in audio task

This commit is contained in:
Moritz Weber 2020-06-07 18:22:10 +02:00
parent 52f0db8dc5
commit f92731779d
4 changed files with 25 additions and 9 deletions

View file

@ -1,3 +1,5 @@
import 'dart:ui';
import 'package:flutter_audio_query/flutter_audio_query.dart';
import 'package:get_it/get_it.dart';
import 'package:moor/isolate.dart';
@ -65,6 +67,8 @@ Future<void> setupGetIt() async {
// data sources
final MoorIsolate moorIsolate = await createMoorIsolate();
IsolateNameServer.registerPortWithName(moorIsolate.connectPort, MOOR_ISOLATE);
final DatabaseConnection databaseConnection = await moorIsolate.connect();
final MoorMusicDataSource moorMusicDataSource = MoorMusicDataSource.connect(databaseConnection);
getIt.registerLazySingleton<MusicDataSource>(() => moorMusicDataSource);

View file

@ -35,12 +35,11 @@ class AudioManagerImpl implements AudioManager {
@override
Future<void> playSong(int index, List<SongModel> songList) async {
await _startAudioService();
final List<MediaItem> queue = songList.map((s) => s.toMediaItem()).toList();
final List<String> queue = songList.map((s) => s.path).toList();
// await AudioService.customAction(SET_QUEUE, listofids);
await AudioService.customAction(SET_QUEUE, queue);
await AudioService.addQueueItem(queue[index]);
AudioService.playFromMediaId(queue[index].id);
AudioService.playFromMediaId(queue[index]);
}
@override

View file

@ -1,13 +1,19 @@
import 'dart:async';
import 'dart:ui';
import 'package:audio_service/audio_service.dart';
import 'package:just_audio/just_audio.dart';
import 'package:moor/isolate.dart';
import 'package:moor/moor.dart';
import 'moor_music_data_source.dart';
const String SET_QUEUE = 'SET_QUEUE';
class AudioPlayerTask extends BackgroundAudioTask {
final _audioPlayer = AudioPlayer();
final _completer = Completer();
MoorMusicDataSource _moorMusicDataSource;
final _mediaItems = <String, MediaItem>{};
final _queue = <MediaItem>[];
@ -18,10 +24,11 @@ class AudioPlayerTask extends BackgroundAudioTask {
Future<void> onStart(Map<String, dynamic> params) async {
_audioPlayer.getPositionStream().listen((duration) => _position = duration);
// AudioServiceBackground.setState(
// controls: [],
// basicState: BasicPlaybackState.none,
// );
final connectPort = IsolateNameServer.lookupPortByName(MOOR_ISOLATE);
final MoorIsolate moorIsolate = MoorIsolate.fromConnectPort(connectPort);
final DatabaseConnection databaseConnection = await moorIsolate.connect();
_moorMusicDataSource = MoorMusicDataSource.connect(databaseConnection);
await _completer.future;
}
@ -78,10 +85,14 @@ class AudioPlayerTask extends BackgroundAudioTask {
Future<void> onCustomAction(String name, arguments) async {
switch (name) {
case SET_QUEUE:
break;
return _setQueue(List<String>.from(arguments as List<dynamic>));
default:
}
}
Future<void> _setQueue(List<String> queue) async {
}
}
MediaControl playControl = const MediaControl(

View file

@ -13,6 +13,8 @@ import 'music_data_source_contract.dart';
part 'moor_music_data_source.g.dart';
const String MOOR_ISOLATE = 'MOOR_ISOLATE';
@DataClassName('MoorAlbum')
class Albums extends Table {
TextColumn get title => text()();