flutter - 如何从以前的非 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 的任何想法?和/或任何人都知道修改插件以删除前缀是否会导致任何意外的副作用?
解决方案
推荐阅读
- ansible - 连接字符串以在 jinja2 中创建变量
- c - 系统调用挂钩示例参数不正确
- sql - Regex Postgresql:递归删除字符串的最后一部分
- docker - nvidia-docker 在本地找不到 nvidia-smi:latest
- git - 如何在 github 上删除以前与 master 合并的分支
- vuejs2 - 滚动到 v-expansion-panel 打开
- c++ - 'struct std::iterator_traits 中没有名为 'value_type' 的类型
- r - 重叠晶格直方图的常见断点和自由轴
- twig - 如何在树枝模板中发现“应用程序”?
- css - FlexBox 容器无响应