【发布时间】:2019-04-03 15:13:14
【问题描述】:
Android 具有PreferenceScreen,它为您提供一致的Settings 接口,并自行处理大量SharedPreferences 功能。
Flutter 中是否有类似的东西,还是我必须使用自定义 ListView 自己创建它?
【问题讨论】:
标签: dart flutter flutter-layout
Android 具有PreferenceScreen,它为您提供一致的Settings 接口,并自行处理大量SharedPreferences 功能。
Flutter 中是否有类似的东西,还是我必须使用自定义 ListView 自己创建它?
【问题讨论】:
标签: dart flutter flutter-layout
因此,不存在任何类似的小部件,您必须自己创建它并在onChanged 或onTap 事件中处理它们的操作。例如:
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: (){},
)
【讨论】:
在 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 下找到它。 有关子页面、隐藏首选项或更多小部件等更多功能,请查看示例。
【讨论】:
ListView 和 ListTile 实现了它
preferences 为您的应用中的设置页面提供一些 UI 小部件,这些小部件使用 shared_preferences
根据我现在的研究(我查看了https://pub.dartlang.org 和其他资源),您的问题的答案是,Flutter 中没有类似的页面(查看official documentation)。有一个插件有SharedPreferences,它来自 Flutter 团队,但是如果你查看它的源代码,你会发现它只是进行数据修改。其他开发者的其他替代品也没有任何视觉效果(我会继续检查,如果找到,我会编辑我的帖子)。
有一些方法可以做到这一点,你可以通过调用 android bridge 来实现,当你使用 flutter 或 my真正的答案是您可以使用您提到的列表视图来实现它,并根据您的需要分配不同的子元素。
【讨论】: