gpt4 book ai didi

flutter - 读取 Flutter 应用程序中先前存储在 native 应用程序中的共享首选项

转载 作者:行者123 更新时间:2023-12-03 13:30:06 26 4
gpt4 key购买 nike

我有以下问题:现在 PlayStore 中有一个应用程序是用 native 代码(iOS 和 Android)编写的,我正计划迁移到 Flutter。我的目标是用户不会注意到引擎盖下的变化,但可以像以前一样继续使用该应用程序。为此,我还需要迁移共享首选项。然而,这是相当困难的。在原生 Android 应用程序中,我像这样存储了相关的共享首选项:

SharedPreferences sharedPrefs = context.getSharedPreferences(
"storage",
Context.MODE_PRIVATE
);

sharedPrefs.putString('guuid', 'guuid_value');
editor.apply();

这会导致在此路径上创建一个文件:
/data/data/patavinus.patavinus/shared_prefs/storage.xml

有了这个内容:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="guuid" value="guuid_value" />
</map>

如果我在 Flutter 中使用 shared_prefences 通过这样做来获取这个值:
final sharedPreferences = await SharedPreferences.getInstance();
sharedPreferences.getString('guuid');

它返回 null 因为它寻找
/data/data/patavinus.patavinus/shared_prefs/FlutterSharedPreferences.xml这是在 Flutter 中使用 shared_preferences 存储共享首选项时写入的文件。因为共享首选项是在 native 应用程序上下文中编写的,该文件显然不存在。

有什么办法可以告诉 Flutter 去寻找 /data/data/patavinus.patavinus/shared_prefs/storage.xml无需使用平台 channel ?

我知道这是如何工作的,就像这里提到的那样: How to access flutter Shared preferences on the android end (using java) .这种方式很简单,因为在 Android 中你可以选择在 Flutter 的前缀前面加上。但是,在 Flutter 中你不能。

我也知道这个插件: https://pub.dev/packages/native_shared_preferences但是,我无法相信第三方插件是推荐的方式。此外,我已经在多个资源文件中传播了相关的共享首选项。在这个插件中,你只能设置一个(通过指定字符串资源 flutter_shared_pref_name )。

最佳答案

按照建议 here您可以获取 native 文件的内容并将其复制到新文件中。当用户第一次升级到你的 Flutter 应用时,你可以将内容复制到 Flutter 的存储文件中。

关于flutter - 读取 Flutter 应用程序中先前存储在 native 应用程序中的共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62148055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com