You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用flutter_local_notification部分设备通知图标显示白块如何解决

解决Flutter通知图标显示白块的问题

为什么会出现白块?

Android 5.0(API 21)及以上版本对通知图标有强制规范:必须是透明背景的单色(白色)图形。如果你的图标有实色背景、多色,或者只放了一个尺寸的图标没适配不同分辨率设备,就会出现白块占位的情况。只把图标放在res/drawable目录,没法覆盖所有dpi的设备,部分设备会因为尺寸不匹配渲染异常。

具体修复步骤

1. 制作符合要求的通知图标

  • 准备一个透明背景、仅白色前景的图标,优先用SVG矢量图,也可以生成不同分辨率的位图:
    • 对应尺寸和存放目录:
      • mdpi: 24x24px → res/mipmap-mdpi
      • hdpi: 36x36px → res/mipmap-hdpi
      • xhdpi: 48x48px → res/mipmap-xhdpi
      • xxhdpi: 72x72px → res/mipmap-xxhdpi
      • xxxhdpi: 96x96px → res/mipmap-xxxhdpi
  • 把这些图标按目录放置,统一命名(比如ic_notification.png)。

2. 配置AndroidManifest.xml

  • 在<application>标签内添加以下配置:
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@mipmap/ic_notification" />
    <!-- 可选:设置状态栏通知图标的背景色,仅Android 5.0+生效 -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/your_notification_color" />
    
  • 同时在flutter_local_notification初始化时指定该图标:
    const AndroidInitializationSettings initializationSettingsAndroid =
        AndroidInitializationSettings('@mipmap/ic_notification');
    

3. 排查现有图标的问题

如果不想重新制作图标,先检查当前的aaaa_logo.png:

  • 是否有透明背景?若带实色背景,Android系统会自动将非透明区域转为白色,直接显示白块。
  • 是否为单色?多色图标在Android 5.0+系统中会被过滤为白色,若轮廓不清晰就会变成白块。

4. 清理缓存后测试

  • 执行flutter clean清理项目缓存,再重新编译运行,然后在出现问题的设备上验证图标显示效果。

内容的提问来源于stack exchange,提问作者Akhil George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:14:56