flutter - 使用 flutter_local_notifications 时,如何在 Flutter 中将 Future<Null> 转换为 Future<dynamic>?

标签 flutter dart casting flutter-local-notification

我在 flutter 中使用 flutter_local_notifications 插件,在初始化它时遇到了这个错误。

The argument type 'Future<Null> Function(int, String, String, String)' can't be assigned to the parameter type 'Future<dynamic> Function(int, String?, String?, String?)?'

我使用的代码是:

void main() async {
  SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
  WidgetsFlutterBinding.ensureInitialized();

  WidgetsFlutterBinding.ensureInitialized();

  var initializationSettingsAndroid = AndroidInitializationSettings('logo');
  var initializationSettingsIOS = IOSInitializationSettings(
      requestAlertPermission: true,
      requestBadgePermission: true,
      requestSoundPermission: true,
      onDidReceiveLocalNotification:
          (int id, String title, String body, String payload) async {}),//Error on this line
          
        
  var initializationSettings = InitializationSettings(
      android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
  await flutterLocalNotificationsPlugin.initialize(initializationSettings,
      onSelectNotification: (String payload) async {
    if (payload != null) {
      debugPrint('notification payload: ' + payload);
    }
  });
  runApp(MyApp());
}

有没有办法在此函数中将 Future 转换为 Future>?
非常感谢您的帮助。谢谢!

最佳答案

看来您正在使用该软件包的 null safe 版本。

随着 null-safetyNullable 类型的引入,您需要仔细检查包提供的参数。

onDidReceiveLocalNotification 不保证 titlebodypayload 不会为空。这就是为什么定义在他们的代码中如此,

typedef DidReceiveLocalNotificationCallback 
  = Future<dynamic> Function(int id, String? title, String? body, String? payload);

请注意 ? 符号,它表示它们是 Nullable 类型,因此您应该以相同的方式定义回调。

将您的代码更改为此,

onDidReceiveLocalNotification:
      (int id, String? title, String? body, String? payload) async {})

关于flutter - 使用 flutter_local_notifications 时,如何在 Flutter 中将 Future<Null> 转换为 Future<dynamic>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67757891/

相关文章:

c - 在 C 语言中,memcpy() 是否不需要/不建议强制转换为 (void*),就像 malloc() 不需要一样?

firebase - 一次性验证后Flutter Android App崩溃

java - 将字符串数组转换为 int 数组(泛型?)

flutter - 如何在Firestore中保存时间戳

firebase - 如何基于uid创建用户个人资料并导航到个人资料页面?

dart - 使用Dart Intl如何初始化多个库?

dart mdv 数据绑定(bind)不会在更改时更新

c++ - 将 zlib 与 const 数据一起使用

flutter - 行中的空格文本但仅基于一个子小部件

flutter - ffmpeg 似乎输出带有错误编解码器的视频?