streamSearchResults method
Stream<Map<String, dynamic> >
streamSearchResults({
- required String query,
- int limit = 10,
- String thumbQuality = 'VERY_HIGH',
- String audioQuality = 'VERY_HIGH',
- bool includeAudioUrl = true,
- bool includeAlbumArt = true,
override
Implementation
@override
Stream<Map<String, dynamic>> streamSearchResults({
required String query,
int limit = 10,
String thumbQuality = 'VERY_HIGH',
String audioQuality = 'VERY_HIGH',
bool includeAudioUrl = true,
bool includeAlbumArt = true,
}) {
// ✅ Step 1: Start the native streaming process first
_methodChannel.invokeMethod('startStreamingSearch', {
'query': query,
'limit': limit,
'thumbQuality': thumbQuality,
'audioQuality': audioQuality,
'includeAudioUrl': includeAudioUrl,
'includeAlbumArt': includeAlbumArt,
});
// ✅ Step 2: Don't reuse streams. Just return a fresh one.
return _eventChannel
.receiveBroadcastStream({
'query': query,
'limit': limit,
'thumbQuality': thumbQuality,
'audioQuality': audioQuality,
'includeAudioUrl': includeAudioUrl,
'includeAlbumArt': includeAlbumArt,
}) // ✅ arguments passed correctly
.cast<Map<dynamic, dynamic>>()
.map((event) {
debugPrint('[Dart] ✅ Stream event received: $event');
return Map<String, dynamic>.from(event);
});
}