颤振:如何使用真棒通知从操作按钮的单击中获取/写入共享首选项的数据?



我正在使用Awesome notifications来显示我的应用程序中的通知。在通知中,我有一个操作按钮,当按下它时,应用程序应该使用共享偏好从手机内存读取和写入一些简单的数据。这应该在后台发生,而不需要在前台打开应用程序。

我尝试了以下代码:

@pragma("vm:entry-point")
static Future<void> onActionReceivedMethod(ReceivedAction action) async {
print('It works');
print(action.toMap());
final SharedPreferences prefs = await SharedPreferences.getInstance();
List<PinnedFolder> pinnedList = [];
try {
final String? pinnedString = prefs.getString('pinnedKey');
if (pinnedString != null) {
pinnedList = PinnedFolder.decode(pinnedString);
print('PinnedList got from memory, length: ${pinnedList.first.pinnedList.length}');
}
} catch (error) {
debugPrint('Error: couldnt get pinned folders: $error');
}

"It works"和'action.toMap()'得到打印,但我无法从共享偏好中获得数据。是这样吗,我不能在@pragma("vm:entry-point"函数中使用添加的包?修复代码的最佳方法是什么?动作不需要在按钮按下后立即发生,它也可以在下次应用程序处于前台时发生,但这样按钮动作信息仍然可用。

我找到了使用flutter_secure_storage包的解决方案。

const storage = FlutterSecureStorage(); await storage.write(key: my_key, value: my_value);

似乎只有几个包在@pragma("vm:entry-point"函数中工作,但这是其中之一。我实现了它,以便每次应用程序打开时,它都会在应用程序启动之前从安全存储中获取并处理数据。

相关内容

  • 没有找到相关文章

最新更新