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

flutter_local_notifications中Darwin/IOSNotificationDetails均无法使用求助

解决flutter_local_notifications与firebase_messaging集成的推送问题

问题根源分析

你的问题主要来自两个核心点:

  • 版本兼容冲突:flutter_local_notifications 12.0.4要求Flutter版本至少为3.7.0,而你当前使用的Flutter 3.3.9不满足该最低要求,导致Darwin系列类(DarwinInitializationSettings、DarwinNotificationDetails)无法被正常识别。
  • API参数变更:flutter_local_notifications 10.x及以上版本已将iOS相关配置的参数名从iOS改为darwin,同时IOSNotificationDetails已被废弃并替换为DarwinNotificationDetails,旧代码写法不符合新版本规范。

解决方案

方案一:升级Flutter版本(推荐)

  1. 执行命令将Flutter升级到稳定版(确保版本≥3.7.0):
flutter upgrade
  1. 清理并重新安装依赖:
flutter clean && flutter pub get
  1. 修改代码适配新版本API:
final android = AndroidInitializationSettings('@mipmap/ic_launcher');
final darwin = DarwinInitializationSettings();
final initSettings = InitializationSettings(
  android: android,
  darwin: darwin, // 参数名从iOS改为darwin
);
flutterLocalNotificationsPlugin.initialize(initSettings);

FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
  print('......message: ${message.notification?.title}--${message.notification?.body}');

  BigTextStyleInformation bigTextStyleInformation = BigTextStyleInformation(
    message.notification!.body.toString(),
    htmlFormatBigText: true,
    contentTitle: message.notification!.title.toString(),
    htmlFormatContentTitle: true,
  );

  AndroidNotificationDetails androidPlatformChannelSpecitics = AndroidNotificationDetails(
    'dbfood',
    'dbfood',
    importance: Importance.high,
    styleInformation: bigTextStyleInformation,
    priority: Priority.high,
    playSound: true,
  );

  NotificationDetails platformChannelSpecifics = NotificationDetails(
    android: androidPlatformChannelSpecitics,
    darwin: DarwinNotificationDetails(), // 参数名从iOS改为darwin
  );
  await flutterLocalNotificationsPlugin.show(
    0, 
    message.notification?.title, 
    message.notification?.body, 
    platformChannelSpecifics,
    payload: message.data['body'],
  );
});
  1. 重新运行项目验证推送功能。

方案二:降级flutter_local_notifications版本(仅当无法升级Flutter时使用)

如果无法升级Flutter,可将flutter_local_notifications降级到兼容Flutter 3.3.9的版本(如10.5.0,支持Flutter ≥2.5.0):

  1. 修改pubspec.yaml中的依赖配置:
flutter_local_notifications: ^10.5.0
  1. 清理并重新安装依赖:
flutter clean && rm pubspec.lock && flutter pub get
  1. 适配降级后的API(10.x版本参数名仍为iOS):
final android = AndroidInitializationSettings('@mipmap/ic_launcher');
final ios = DarwinInitializationSettings();
final initSettings = InitializationSettings(android: android, iOS: ios);
flutterLocalNotificationsPlugin.initialize(initSettings);

// 通知发送部分保持参数名iOS不变
NotificationDetails platformChannelSpecifics = NotificationDetails(
  android: androidPlatformChannelSpecitics,
  iOS: DarwinNotificationDetails(),
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:35:20