Flutter Android PreferenceScreen 设置页面

Flutter Android PreferenceScreen settings page

Android 具有 PreferenceScreen,它为您提供一致的 Settings 界面并自行处理许多 SharedPreferences 功能。

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

根据我现在的研究(我查看了来自Flutter团队的https://pub.dartlang.org and other resources), the answer to your question is, no there is no page like that in Flutter (Check the official documentation). There is one plugin to have SharedPreferences,但是如果你查看它的源代码,你会发现它只是做数据修改。其他开发人员的其他替代方案没有也有任何视觉效果(我会继续检查,如果找到的话,我会编辑我的 post)。

有一些方法可以做到这一点,您可以通过调用 android 桥并为 android 设置 android 特定屏幕(是的,我知道,它不会很有意义)当你有颤动或我的真正答案是你可以通过使用你提到的列表视图来实现它并根据你的需要分配不同的子元素。

在 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 下找到它。 有关子页面、隐藏首选项或更多小部件等更多功能,请查看示例。

因此,不存在任何类似的小部件,您必须自己创建它并在 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: (){},
)