【问题标题】:Flutter Android PreferenceScreen settings pageFlutter Android PreferenceScreen 设置页面
【发布时间】:2019-04-03 15:13:14
【问题描述】:

Android 具有PreferenceScreen,它为您提供一致的Settings 接口,并自行处理大量SharedPreferences 功能。

Flutter 中是否有类似的东西,还是我必须使用自定义 ListView 自己创建它?

【问题讨论】:

    标签: dart flutter flutter-layout


    【解决方案1】:

    因此,不存在任何类似的小部件,您必须自己创建它并在onChangedonTap 事件中处理它们的操作。例如:

    复选框首选项

    CheckboxListTile(
      value: true,
      title: Text("This is a CheckBoxPreference"),
      onChanged: (value) {},
    ),
    

    切换偏好

    SwitchListTile(
      value: false,
      title: Text("This is a SwitchPreference"),
      onChanged: (value) {},
    ),
    

    列表首选项

    ListTile(
      title: Text("This is a ListPreference"),
      subtitle: Text("Subtitle goes here"),
      onTap: (){},
    )
    

    【讨论】:

      【解决方案2】:

      在 Flutter 中,制作 PreferenceScreen 页面最简单的方法是使用 ListView 和 ListTiles。

      ListView(children: <Widget>[
            ListTile(
              title: Text('Enable Feature'),
              trailing: Checkbox(
                value: PrefService.getBool('feature_enabled'),
                onChanged: (val) {
                  setState(() {
                    PrefService.setBool('feature_enabled', val);
                  });
                },
              ),
              onTap: () {
                setState(() {
                  PrefService.setBool(
                      'feature_enabled', !PrefService.getBool('feature_enabled'));
                });
              },
            )
          ]),
      

      但您仍然需要监听更改并保存它们。

      为了更容易,您可以使用包preferences。它删除样板代码并管理保存更改。上面的示例使用preferences

      PreferencePage([
            CheckboxPreference(
              'Enable Feature',
              'feature_enabled',
            )
          ]),
      

      您可以在https://pub.dartlang.org/packages/preferences 下找到它。 有关子页面、隐藏首选项或更多小部件等更多功能,请查看示例。

      【讨论】:

      • 谢谢,我使用自己的自定义 ListViewListTile 实现了它
      • 对不起,我的愚蠢问题,但是包首选项和共享首选项之间有什么区别?
      • @FilipeOS shared_preferences 可以在您的设备上存储键值对,preferences 为您的应用中的设置页面提供一些 UI 小部件,这些小部件使用 shared_preferences
      【解决方案3】:

      根据我现在的研究(我查看了https://pub.dartlang.org 和其他资源),您的问题的答案是,Flutter 中没有类似的页面(查看official documentation)。有一个插件有SharedPreferences,它来自 Flutter 团队,但是如果你查看它的源代码,你会发现它只是进行数据修改。其他开发者的其他替代品也没有任何视觉效果(我会继续检查,如果找到,我会编辑我的帖子)。

      有一些方法可以做到这一点,你可以通过调用 android bridge 来实现,当你使用 flutter 或 my真正的答案是您可以使用您提到的列表视图来实现它,并根据您的需要分配不同的子元素。

      【讨论】:

      • 感谢您的信息。我自己也搜索过,我想,设置是几乎每个应用程序都有的一些非常关键的功能。并希望找到解决办法。也许我应该等待,有人可能会想出一些解决方案(除了从头开始自己构建所有东西)
      • 有一个设置屏幕,但它是 cupertino 和 iOS,看起来很丑 :) 我希望有人能想出一些东西。
      • 即使我在 Github 上看到了 iOS 的设置,他们实现了完整的 iOS 设置,这并没有给你任何想法。
      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 2018-11-03
      • 1970-01-01
      • 2019-08-08
      • 2022-01-18
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      相关资源
      最近更新 更多