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

如何使用flutter_local_notifications修改Android通知托盘图标

Android通知托盘图标显示纯白的修复方案(适用于flutter_local_notifications ^9.6.1)

核心原因

Android 5.0(API 级别21)及以上版本对通知小图标有强制规范:必须使用透明背景、仅保留alpha通道的单色白色前景图标。如果传入带彩色填充、不透明背景的普通应用图标,系统会自动将所有非透明区域统一渲染为纯白色,就会出现展开通知托盘后图标全白的问题。状态栏小图标因为展示尺寸极小,视觉上不容易暴露规范问题,但本质也不符合系统要求。

操作步骤

  • 第一步:制作符合规范的通知图标
    按照Android官方尺寸规范制作对应分辨率的PNG图标:
    • mdpi密度:24*24px
    • hdpi密度:36*36px
    • xhdpi密度:48*48px
    • xxhdpi密度:72*72px
    • xxxhdpi密度:96*96px
      图标要求:仅保留白色的前景图案,背景区域必须完全透明,不能有任何彩色填充、不透明底色。制作完成后将图标放入Android工程android/app/src/main/res/下对应分辨率的drawable/mipmap目录,文件命名统一使用小写字母、数字、下划线,例如命名为ic_notification.png。
  • 第二步:在插件初始化时配置默认图标
    初始化flutter_local_notifications的Android配置项时,传入正确的图标资源引用,注意不要带文件后缀:
    // 图标放在mipmap目录用@mipmap/前缀,放在drawable目录用@drawable/前缀
    const AndroidInitializationSettings androidInitSettings =
        AndroidInitializationSettings('@mipmap/ic_notification');
    
    final InitializationSettings initSettings = InitializationSettings(
      android: androidInitSettings,
    );
    await flutterLocalNotificationsPlugin.initialize(initSettings);
    

    如果需要给单条通知单独设置图标,在构造AndroidNotificationDetails时给icon字段传入同样格式的资源引用即可,单条配置的优先级高于初始化时的全局默认配置。

  • 第三步:验证配置生效
    配置完成后不要使用热重载/热重启,先执行flutter clean清除构建缓存,彻底卸载设备上的旧版本应用,重新全新安装构建包即可看到正常的图标效果。

常见问题排查

  • 如果重新安装后还是白块,优先检查图标文件:确认背景是100%透明,不要把带圆角底色的应用logo直接当通知图标用
  • 如果需要修改通知图标的显示颜色,可以在AndroidNotificationDetails中通过color参数传入指定色值,系统会将单色图标渲染为你设置的颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:54:21