如何访问 Flutter SharedPreferences 中 iOS UserDefaults 存储的数据

How to access iOS UserDefaults stored data in Flutter SharedPrefrences

我有一个 iOS 应用程序已经在商店中,现在计划用新版本的 Flutter 替换它 release

我想在 Flutter 代码中访问本机应用程序的 UserDefaults 数据。

使用 Flutter 文档中建议的方式,我得到了 null value。我试过的是:

在我的 pubspec.yaml 文件中:

dependencies:
  shared_preferences: ^0.5.12+4

我是我的 home.dart class 文件 我正在导入 header :

import 'package:shared_preferences/shared_preferences.dart';

这就是我尝试从 native 应用程序访问存储在 iOS 应用程序中的数据的方式,我使用相同的包 ID (Package ID)在flutter工程中覆盖应用,覆盖成功

@override
void initState() {
    super.initState();
    getFromLocalMemory('user').then((value) =>
      userInfo = value
  );
}



Future<String> getFromLocalMemory(String key) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String user = prefs.getString(key);
    return user;
}

它始终returns 为空。 虽然 'user' 密钥从 iOS 本机应用程序获取数据时有数据。

这样的话,建议您使用平台渠道方式

platform channels

iOS 似乎不允许 flutter framework 访问 NSUserDefaults,当它没有从一开始就创建它时,..

希望对你有用。

我们可以使用现有的插件native_shared_preferences。它允许我们在 Android 上访问原生 SharedPreferences 和在 iOS 上访问 UserDefaults。 通过键“SomeKey”读取值的示例代码:

final someKey = "SomeKey";
var prefs = await NativeSharedPreferences.getInstance();
if (prefs.containsKey(someKey)) {
    print("Value for SomeKey: ${prefs.get(someKey)}");
}