我想获取除两个键之外的所有SharedPreferences键
因为有N个键,所以我不能使用getString(Key)方法。
Future<List<Widget>> getAllPrefs() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
// I won't print those two keys neither remove them
// prefs.remove("lib_cached_image_data");
// prefs.remove("lib_cached_image_data_last_clean");
prefs.setString("Market", "position");
prefs.setString("Home", "position");
return prefs.getKeys().map<Widget>((key) {
//this is incorrect
if (key != "lib_cached_image_data" && key != "lib_cached_image_data") {
ListTile(
title: Text(key),
subtitle: Text(prefs.get(key).toString()),
);
}
}).toList(growable: false);
}
我期望输出:除(“ lib_cached_image_data”,值),(“ lib_cached_image_data_last_clean”,值)之外的所有(“键”,“值”)
答案 0 :(得分:2)
您可以使用where
。别忘了也返回ListTile
。
final SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.getKeys().where((String key) => key != "lib_cached_image_data" && key != "lib_cached_image_data").map<Widget>((key) {
return ListTile(
title: Text(key),
subtitle: Text(prefs.get(key).toString()),
);
}).toList(growable: false);
答案 1 :(得分:0)
实现您的代码,如下所示:
final SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.getKeys().where((String key) => key != "lib_cached_image_data" && key != "lib_cached_image_data").map<Widget>((key) {
return ListTile(
title: Text(key),
subtitle: Text(prefs.get(key).toString()),
);
}).toList(growable: false);