- 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/
我最近在/ drawable中添加了一些.gifs,以便可以将它们与按钮一起使用。这个工作正常(没有错误)。现在,当我重建/运行我的应用程序时,出现以下错误: Error: Gradle: Execu
Android 中有返回内部存储数据路径的方法吗? 我有 2 部 Android 智能手机(Samsung s2 和 s7 edge),我在其中安装了一个应用程序。我想使用位于这条路径中的 sqlit
这个问题在这里已经有了答案: What's the difference between "?android:" and "@android:" in an android layout xml f
我只想知道 android 开发手机、android 普通手机和 android root 手机之间的实际区别。 我们不能从实体店或除 android marketplace 以外的其他地方购买开发手
自Gradle更新以来,我正在努力使这个项目达到标准。这是一个团队项目,它使用的是android-apt插件。我已经进行了必要的语法更改(编译->实现和apt->注释处理器),但是编译器仍在告诉我存在
我是android和kotlin的新手,所以请原谅要解决的一个非常简单的问题! 我已经使用导航体系结构组件创建了一个基本应用程序,使用了底部的导航栏和三个导航选项。每个导航选项都指向一个专用片段,该片
我目前正在使用 Facebook official SDK for Android . 我现在正在使用高级示例应用程序,但我不知道如何让它获取应用程序墙/流/状态而不是登录的用户。 这可能吗?在那种情
我在下载文件时遇到问题, 我可以在模拟器中下载文件,但无法在手机上使用。我已经定义了上网和写入 SD 卡的权限。 我在服务器上有一个 doc 文件,如果用户单击下载。它下载文件。这在模拟器中工作正常但
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
任何人都可以告诉我什么是 android 缓存和应用程序缓存,因为当我们谈论缓存清理应用程序时,它的作用是,缓存清理概念是清理应用程序缓存还是像内存管理一样主存储、RAM、缓存是不同的并且据我所知,缓
假设应用程序 Foo 和 Eggs 在同一台 Android 设备上。任一应用程序都可以获取设备上所有应用程序的列表。一个应用程序是否有可能知道另一个应用程序是否已经运行以及运行了多长时间? 最佳答案
我有点困惑,我只看到了从 android 到 pc 或者从 android 到 pc 的例子。我需要制作一个从两部手机 (android) 连接的 android 应用程序进行视频聊天。我在想,我知道
用于使用 Android 以编程方式锁定屏幕。我从 Stackoverflow 之前关于此的问题中得到了一些好主意,并且我做得很好,但是当我运行该代码时,没有异常和错误。而且,屏幕没有锁定。请在这段代
文档说: android:layout_alignParentStart If true, makes the start edge of this view match the start edge
我不知道这两个属性和高度之间的区别。 以一个TextView为例,如果我将它的layout_width设置为wrap_content,并将它的width设置为50 dip,会发生什么情况? 最佳答案
这两个属性有什么关系?如果我有 android:noHistory="true",那么有 android:finishOnTaskLaunch="true" 有什么意义吗? 最佳答案 假设您的应用中有
我是新手,正在尝试理解以下 XML 代码: 查看 developer.android.com 上的文档,它说“starStyle”是 R.attr 中的常量, public static final
在下面的代码中,为什么当我设置时单选按钮的外观会发生变化 android:layout_width="fill_parent" 和 android:width="fill_parent" 我说的是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
假设我有一个函数 fun myFunction(name:String, email:String){},当我调用这个函数时 myFunction('Ali', 'ali@test.com ') 如何
我是一名优秀的程序员,十分优秀!