showNotification method

Future<void> showNotification({
  1. required SimpleAudioPlayer player,
  2. required String title,
  3. required String artist,
  4. required String clipArt,
})

Implementation

Future<void> showNotification({required SimpleAudioPlayer player, required String title, required String artist, required String clipArt}) {
  _notificationData = _NotificationData(player, title, artist, clipArt);

  if (imageBase64Cache.containsKey(clipArt)) {
    final base64Image = imageBase64Cache[clipArt] ?? "";
    return SimpleAudioPlayerApi.showNotification(playerId: player.playerId, title: title, artist: artist, clipArt: base64Image);
  }

  // load image form network
  final NetworkImage imageProvider = NetworkImage(clipArt);
  final ImageStream stream = imageProvider.resolve(ImageConfiguration.empty);
  stream.addListener(ImageStreamListener((ImageInfo info, bool synchronous) async {
    final byteData = await info.image.toByteData(format: ImageByteFormat.png);
    if (byteData != null) {
      imageBase64Cache.clear();
      imageBase64Cache[clipArt] = base64Encode(byteData.buffer.asUint8List());

      // load image done
      updateNotification();
    }
  }));

  return SimpleAudioPlayerApi.showNotification(playerId: player.playerId, title: title, artist: artist, clipArt: "");
}