- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
所以我们有一个 Flutter 应用程序——它有很多用户偏好。迄今为止,我们一直在使用 shared_preferences
插件来处理它们(就像 Flutter 领域的其他人一样)。生活很幸福。
现在,我们的 iOS 用户希望在我们应用程序的 Settings.app
区域中看到其中一些首选项。目前,只有系统标准的显示。
我们(通过 Xcode)为几个新的首选项创建了一个 Settings.bundle
文件(在添加其他首选项之前)——瞧——我们在应用程序的设置中看到了它们……然而,我们并没有在实际的 Flutter 应用程序中看到它们——我们仍然只看到在应用程序本身内管理的“其他”首选项。
我们基本上是在 Debug模式下“转储”Preferences 键和值..我们看到的都是我们在应用程序中定义的..
所以两个问题:
1) 我们是否遗漏了什么?查看 shared_preferences
的内部代码,它似乎使用了 Settings.bundle
使用的相同“存储”区域。那么为什么我们在应用令人困惑。但我们看到了其他应用。
2) Android 中无需启动应用程序即可设置应用程序首选项的等效方法是什么?我们的偏好之一只有在应用程序启动之前设置才有意义..老实说,我不是一个多产的 Android 开发者..
干杯!
最佳答案
这里是部分答案,仅适用于 iOS。仍然不知道如何在 Android 上处理这个问题(或者如果可能的话)。
如果您想在您的应用程序的“设置”应用程序中设置可查看和可更改的首选项,基本上您需要执行一个额外的步骤。一般的整体步骤是:
-- 像往常一样创建您的 Flutter 首选项。-- 在 iOS 文件夹中创建一个名为“Settings.bundle”的新顶级文件夹。 Runner 文件夹中已有其中一个,但这对我们来说用处不大。
-- 在 Settings.bundle 文件夹中,您需要另一个名为“en.lproj”(或您想要的任何其他语言)的子文件夹。在该子文件夹中,您需要一个名为“Root.strings”的文件。
-- 与 en.lproj 处于同一级别的是另一个名为“Root.plist”的文件。所以结构基本上是这样的:
main_app/
iOS/
...
Settings.bundle/
en.lproj/
Root.strings
Root.plist
这里是魔法(大部分)存在的地方。事实证明,flutter 会自动添加前缀“flutter”。您使用的所有首选项名称。这就是 secret 。所以这是 Root.plist 的示例。注意 flutter.XXXX 键名!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>StringsTable</key>
<string>Root</string>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>Data Location</string>
</dict>
<dict>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Title</key>
<string>Region</string>
<key>Key</key>
<string>flutter.dataSourceRegionV2</string>
<key>DefaultValue</key>
<string>0</string>
<key>Titles</key>
<array>
<string>US/World</string>
<string>EU</string>
<string>Advanced</string>
</array>
<key>Values</key>
<array>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
</dict>
<dict>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
<key>Title</key>
<string>Server</string>
<key>Key</key>
<string>flutter.dataSourceServerURLV2</string>
<key>DefaultValue</key>
<string></string>
<key>IsSecure</key>
<false/>
<key>KeyboardType</key>
<string>URL</string>
<key>AutocapitalizationType</key>
<string>None</string>
<key>AutocorrectionType</key>
<string>No</string>
</dict>
</array>
</dict>
</plist>
这包含根据语言在应用的设置文件中使用的翻译字符串。这很简单。同样,来自同一个样本:
/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */
"Data Location" = "Data Location";
"Region" = "Region";
"Server" = "Adv. URL";
"none given" = "none given";
"Authorization" = "Authorization";
"Username" = "Username";
"Password" = "Password";
"Advanced" = "Advanced";
"US/World" = "USA";
"EU" = "European Union";
在您的 Flutter 应用程序中,您使用正常的 shared_preferences用法——只记得删除“flutter”。来自您的应用程序中的前缀。
这是一篇不错的文章的链接,其中包含有关 iOS 设置的更多信息:iOS Settings
希望这可以帮助您解决这个小难题!现在,如果我们能弄清楚 Android!
关于android - Flutter - 如何在 iOS 上使用 shared_preferences 和 Settings.bundle(Android 又如何?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911044/
我正在对共享首选项运行一些单元测试。我正在制作一个帮助程序类,这样我们就不必一遍又一遍地编写相同的代码。 无论我尝试什么,我总是一遍又一遍地得到同样的错误。您将找到我正在测试的类、测试类和堆栈跟踪。
我一直在 flutter 中使用 shared_preferences,直到现在工作正常。突然它停止工作,无论是在 iOS 还是 Android 中。我逐步调试它并将数据存储到 pref,当应用程序打
我有一个非常简单的flutter应用程序,它想使用shared_preference lib。在我将其包含在我的应用中之前,它已经可以构建,但是在安装后,我从gradle中收到错误。 错误: * Er
我正在尝试查看我的应用程序的 shared_pereferences 中是否有可用的 id 键,如果有,则将我的用户重定向到主页。我在 main.dart 的 initState() 函数中检查 Id
我目前正在处理应用程序的缓存处理。 Shared_Preferences 文档指出,更大的信息应该存储在其他地方,但我所使用的几乎都是数组,最多只能有 800-900 个元素,包含简单的整数。 最佳答
我正在编写一个 flutter 应用程序,并且在编写测试时遇到了这个问题。此方法应该将数据写入 TextFields 并点击一个将这些数据保存在 SharedPrefs 中的按钮: testWidge
我对Flutter还是很陌生,现在我正尝试使用其 shared_preferences 包来保存String并取回它。 现在,我相信getString应该返回一个String(至少这是VS Code告
Flutter web 现在支持 shared_preferences .我已添加 shared_preferences到我的 flutter 网络应用程序。 我的问题是当我设置首选项时,比如当我启动
Shared_preferences ( https://pub.dev/packages/shared_preferences ) 似乎不适用于 Flutter for Web。 我有按下按钮时调用
是否可以一次写一个完整的shared_preferences.xml? 我想实现一种设置导入/导出,所以我需要在不丢失 xml 标签的情况下读取和写入整个文件。 读取文件很容易,但是当我写入我的值(使
required this.favorite, 我像这样从上一页得到 bool 值。由于我使用了pageview,所以我想像这样将值存储在索引中以备后用。 loadFavorite() async
您好,每当我构建 apk 时,都会收到这些警告。我几乎不知道那里发生了什么。 但我认为这与我的代码无关。 我可以做些什么,还是应该暂时忽略这些警告并等待此软件包更新? C:\Apps\flutter\
因为 hr 依赖于 flutter_session ^0.1.1,而 flutter_session ^0.1.1 又依赖于 shared_preferences ^0.5.8,所以需要 shared
我在 flutter 中创建了新应用程序,当我运行它时它可以工作,但是当我添加shared_preferences包时,我在运行它时收到此错误 FAILURE: Build failed with a
我正在使用 shared_preferences Flutter 中的依赖。 构建 Xcode (Product->archive - for Generic target) 失败 module 's
我正在使用 flutter 1.2,我的项目在添加 shared_preferences 包之前成功运行。我正在使用 shared_preferences: ^0.5.1+2。 添加后,flutter
我正在使用SHARED_PARESSION^2.0.15。我面临着Webview注销问题。每次用户重新启动应用程序时,用户都会从网页视图中注销。当用户登录Webview并生成Cookie时,我正在尝试
当我添加Shared_Preferences依赖项时,项目不会运行。版本:最新版本2.2.0。以下是错误消息:。我在Main函数中添加了WidgetsFlutterBinding.ensureInit
我正在尝试在我的应用程序中使用共享首选项,甚至在我使用它之前,只需添加依赖项就会出现此错误。有任何想法的人吗?提前致谢 最佳答案 我在使用 aapt2-proto 时遇到了这个问题并以这种方式修复它:
所以我们有一个 Flutter 应用程序——它有很多用户偏好。迄今为止,我们一直在使用 shared_preferences 插件来处理它们(就像 Flutter 领域的其他人一样)。生活很幸福。 现
我是一名优秀的程序员,十分优秀!