Flutter Android PreferenceScreen设置页面

时间:2018-10-30 14:33:30

标签: dart flutter flutter-layout

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

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

3 个答案:

答案 0 :(得分:5)

因此,没有像这样的任何小部件,您将不得不自行创建它,并在Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range On Error GoTo Ende Application.EnableEvents = False For Each rng In Application.Intersect(Columns("D"), Target).Cells If rng.Offset(0, -2).Value = "" Then rng.Offset(0, -2).Value = Date End If Next rng For Each rng In Application.Intersect(Columns("D"), Target).Cells If rng = "" Then rng.Offset(0, -2).Value = "" End If Next rng Ende: Application.EnableEvents = True End Sub onChanged事件中处理它们的动作。例如:

CheckBoxPreference

enter image description here

onTap

SwitchPreference

enter image description here

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

ListPreference

enter image description here

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

有一些方法可以做到这一点,当您与flutter或 my在一起时,可以通过调用android bridge并仅拥有android专用的android屏幕来做到这一点(是的,我知道,这没有多大意义)真正的答案是,您可以使用您提到的列表视图来实现它,并根据需要分配不同的子元素。