首页 > 解决方案 > 如何从以前的非 Flutter 版本的应用程序访问 shared_preferences KVP

问题描述

所以我用 Swift 制作了一个 iOS 应用,并发布到了应用商店。在那个应用程序中,我在 UserDefaults.standard 中保存了一些重要的 KVP。通常,在更新应用程序时,KVP 会毫无问题地转移到更新版本。

现在我正在用 Flutter/Dart 重新制作应用程序。我希望现有用户能够顺利过渡。具体来说,当用户从 Swift 版本更新到 Flutter 版本时,仍应存储 UserDefaults 数据。但是,当我尝试对此进行测试时(使用 Flutter 的 shared_preferences 模块获取现有密钥),这些密钥似乎“消失了”。

它们“消失”的原因是 Flutter 为所有键添加了“flutter.”前缀。因此,当它保存 key XX 时,它实际上是在保存 flutter.XX,而当您尝试检索 key XX 时,您实际上是在检索 flutter.XX。但是在应用程序的 Swift 版本中,我将其保存为 XX,而不是 flutter.XX(显然),所以现在 Flutter“找不到它”。

强制前缀的功能分布在 shared_preferences.dart 和 SharedPreferencesPlugin.m 中。我可以在技术上修改这些文件以删除前缀,但我不知道这样做是否会有任何负面影响。

关于如何在不完全修改共享首选项插件的情况下访问我的旧 KVP 的任何想法?和/或任何人都知道修改插件以删除前缀是否会导致任何意外的副作用?

标签: flutterdart

解决方案


推荐阅读