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

使用flutter_local_notifications:^9.0.1发安卓通知时报空指针异常如何解决?

从错误堆栈的setSmallIcon空指针报错可以直接定位问题:你没有完成flutter_local_notifications的安卓基础配置,也没有对插件做初始化操作,按下面步骤修改即可:

解决步骤

1. 配置通知小图标资源

准备一张透明背景的剪影png图标,放到安卓项目的android/app/src/main/res/drawable目录下,命名为ic_notification.png(不要用彩色图标,安卓5.0及以上版本通知图标会强制提取alpha通道,彩色图标会显示为白色块)。
如果你的应用适配安卓13(API 33)及以上版本,还需要在android/app/src/main/AndroidManifest.xml里添加通知权限:

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

2. 初始化通知插件

你当前的代码完全没有初始化插件的逻辑,在应用启动时(比如主页State的initState方法里)添加初始化代码:

Future<void> initNotificationPlugin() async {
  // 安卓初始化配置,指定全局默认通知小图标
  const AndroidInitializationSettings androidInit = AndroidInitializationSettings('ic_notification');
  const InitializationSettings initSettings = InitializationSettings(android: androidInit);
  // 调用插件初始化
  await NotificationApi._notifications.initialize(initSettings);
  // 安卓13以上申请通知权限
  await NotificationApi._notifications
      .resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()
      ?.requestNotificationsPermission();
}

3. 可选:单独为指定通知配置小图标

你也可以在AndroidNotificationDetails中单独为当前通知指定小图标,优先级高于全局初始化配置:

static Future _notificationDetails() async {
  return const NotificationDetails(
    android: AndroidNotificationDetails(
      'channel id',
      'channel name',
      channelDescription: 'channel description',
      importance: Importance.max,
      // 单独指定当前通知小图标
      smallIcon: DrawableResourceAndroidBitmap('ic_notification'),
    ),
  );
}

所有修改完成后冷重启应用(热重载不生效,需要完全关闭再打开),再点击测试按钮即可正常发送通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:06:03