How to convert Bitmap to AndroidBitmap for push notifications in Flutter?

Viewed 425

I am trying to set up a large icon for push notification using flutter_local_notifications plugin and for the icon I want to use a network image. The code is as follows:

Bitmap bitmap = await Bitmap.fromProvider(NetworkImage("http://pudim.com.br/pudim.jpg")); 
var androidSpecifics = new AndroidNotificationDetails(
    notificationData['id'].toString(),
    'Crop2x Notifications',
    'Crop2x Channel Description',
    importance: Importance.max,
    priority: Priority.high,
    largeIcon: bitmap,
    ticker: 'ticker');

This code is giving an error because bitmap is of the type Bitmap and not of AndroidBitmap type, which the named argument largeIcon requires.

1 Answers

Explore AndroidBitmap class.

Try to get image in format of Uint8List using HTTP connection:

Future<Uint8List> getImageBytes(String imageUrl) async{
     
     http.Response response = await http.get(
     Uri.parse('https://flutter.io/images/flutter-mark-square-100.png'));
     return response.bodyBytes; //Uint8List
}

and then after getting bodyBytes as future try to convert it into bitmap using AndroidBitmap class and base64.encode():

getImageBytes("http://pudim.com.br/pudim.jpg").then((bodyBytes){

      AndroidBitmap androidBitmap = ByteArrayAndroidBitmap.fromBase64String(base64.encode(bodyBytes));

      var androidSpecifics = new AndroidNotificationDetails(
      notificationData['id'].toString(),
      'Crop2x Notifications',
      'Crop2x Channel Description',
      importance: Importance.max,
      priority: Priority.high,
      largeIcon: androidBitmap,
      ticker: 'ticker');
}};
Related