preparation for moor in audio task
This commit is contained in:
parent
52f0db8dc5
commit
f92731779d
4 changed files with 25 additions and 9 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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()();
|
||||
|
|
Loading…
Add table
Reference in a new issue