因此,我在Swift中制作了一个iOS应用,并将其发布到应用商店。在该应用程序中,我已在UserDefaults.standard中保存了一些重要的KVP。通常,在更新应用程序时,KVP会毫无问题地转移到更新的版本。
现在,我正在Flutter / Dart中重新制作该应用程序。我希望现有用户能够顺利过渡。具体来说,当用户从Swift版本更新到Flutter版本时,仍应存储UserDefaults数据。但是,当我尝试对此进行测试时(使用Flutter的shared_preferences模块获取现有密钥),这些密钥似乎已“消失”。
它们“消失”的原因是Flutter在所有键之前加上“ flutter”。这样,当它保存键XX时,实际上是在保存flutter.XX,而当您尝试检索键XX时,实际上是在获取flutter.XX。但是在该应用程序的Swift版本中,我将其保存为XX,而不是flutter.XX(显然),因此Flutter现在“找不到它”。
实施前缀的功能分布在shared_preferences.dart和SharedPreferencesPlugin.m中。从技术上讲,我可以修改这些文件以删除前缀,但是我不知道这样做是否会带来任何负面影响。
关于在不完全修改“共享首选项”插件的情况下如何访问我的旧KVP的任何想法?和/或任何人都知道修改插件以删除前缀是否会引起意外的副作用?