如何解决使用SharedPreferences时,带有用于推送通知的后台处理程序的MissingPluginException
我有一个基于firebase_messaging示例的以下文件,该示例关于如何管理后台消息(即,当应用程序终止或在后台时)。
该文件当前包含以下内容:
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'notifications.dart';
Future<dynamic> backgroundMessageHandler(Map<String,dynamic> message) async {
print("backgroundHandler: $message");
SharedPreferences prefs = await SharedPreferences.getInstance();
print(prefs.getInt('latest_id'));
}
应用程序确实收到通知,该通知在打印message
的内容时显示,但是当我尝试获取SharedPreferences时,控制台将向我显示以下内容消息和代码执行停止:
I/flutter (17018): Unable to handle incoming background message.
I/flutter (17018): MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
是否可以解决此问题?
解决方法
我知道已经有点晚了,但是我找到了解决方案。我将与下一个有此问题的人分享。 您应该在PluginRegistry中添加SharedPreferencesPlugin:
SharedPreferencesPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
完整的课程:
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import com.tekartik.sqflite.SqflitePlugin
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin
class Application : FlutterApplication(),PluginRegistry.PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
override fun registerWith(registry: PluginRegistry?) {
io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
SqflitePlugin.registerWith(registry?.registrarFor("com.tekartik.sqflite.SqflitePlugin"));
FlutterLocalNotificationsPlugin.registerWith(registry?.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin"))
SharedPreferencesPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
}
}
,
之前打电话
SharedPreferences prefs = await SharedPreferences.getInstance();
这一行是您获得价值的地方。
喜欢,
SharedPreferences prefs = await SharedPreferences.getInstance();
String name = prefs.getString("Name");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。