如何将 Bitmap 转换为 AndroidBitmap 以在 Flutter 中推送通知?
Posted
技术标签:
【中文标题】如何将 Bitmap 转换为 AndroidBitmap 以在 Flutter 中推送通知?【英文标题】:How to convert Bitmap to AndroidBitmap for push notifications in Flutter? 【发布时间】:2021-12-22 23:43:07 【问题描述】:我正在尝试使用flutter_local_notifications
插件为推送通知设置一个大图标,并为我想使用网络图像的图标设置一个大图标。代码如下:
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');
此代码给出错误,因为 bitmap
属于 Bitmap
类型,而不是 AndroidBitmap
类型,而命名参数 largeIcon
需要这种类型。
【问题讨论】:
能分享一下Bitmap和AndroidBitmap类的包吗? @DeePanShu Bitmap 来自 'Bitmap' 包,但不了解 AndroidBitmap。 【参考方案1】:探索AndroidBitmap类。
尝试使用HTTP
连接获取Uint8List
格式的图像:
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
然后在获得 bodyBytes 作为未来之后尝试使用AndroidBitmap
类和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');
;
【讨论】:
以上是关于如何将 Bitmap 转换为 AndroidBitmap 以在 Flutter 中推送通知?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SkiaSharp.SkBitmap 转换为 Android.Graphics.Bitmap?
如何将 Bitmap 转换为 AndroidBitmap 以在 Flutter 中推送通知?
如何通过 Bitmap::GetHBITMAP 将位图转换为带有 alpha 的 HBITMAP?
VB.net 如何将数据转换为位图(Bitmap)所需要的byte()数组?急!!!!