streamSearchResults method

  1. @override
Stream<Map<String, dynamic>> streamSearchResults({
  1. required String query,
  2. int limit = 10,
  3. String thumbQuality = 'VERY_HIGH',
  4. String audioQuality = 'VERY_HIGH',
  5. bool includeAudioUrl = true,
  6. 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);
      });
}