Флаттер: как получить все ключи SharedPreferences, кроме 2-х ключей - PullRequest
1 голос
/ 17 апреля 2019

Я хочу получить все ключи SharedPreferences, кроме двух ключей

Я не могу использовать метод getString (Key), поскольку есть N ключей.

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», значение)

Ответы [ 2 ]

3 голосов
/ 17 апреля 2019

Вы можете использовать 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);
0 голосов
/ 16 июня 2019

Реализуйте ваш код так:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...