flutter :How to print shared preferences all content

标签 flutter set sharedpreferences

我要打印所有sharedpreferences内容(key,value)
键和值由用户提供

我尝试使用 getKeys() 方法将所有键放入一个集合中,然后循环该集合并检索我的元素,如下所示:

 _favoritePlaces() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    // prefKeys declared as  static Set<String>
    prefKeys=prefs.getKeys();
    if (prefKeys.isNotEmpty) {
      for (int i = 0; i < prefKeys.length; i++) {
       // this is another function expects to find key given as parameter
        _drawerItem(prefKeys.elementAt(i).toString());
      // expected output should come below
       
      }
    }
  }

预期输出: 键 0 => 值 0

最佳答案

我担心没有这样的 API 公开(公开)来通过 shared_preferences 插件一次获取所有首选项。

你需要自己做。这对我有用:

class MainPage extends StatelessWidget {
  Future<List<Widget>> getAllPrefs() async {
    final SharedPreferences prefs = await PrefStore().prefs;
    return prefs
        .getKeys()
        .map<Widget>((key) => ListTile(
              title: Text(key),
              subtitle: Text(prefs.get(key).toString()),
            ))
        .toList(growable: false);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: FutureBuilder<List<Widget>>(
          future: getAllPrefs(),
          builder: (context, snapshot) {
            if (!snapshot.hasData) return Container();
            return ListView(
              children: snapshot.data,
            );
          }),
    );
  }
}

关于 flutter :How to print shared preferences all content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55712886/

相关文章:

c++ - 如何在 C++ 集合中插入值

不使用 element.hashCode() 的 java.util.Set 实现

java - 使用共享首选项扩充 View

安卓小工具 : Show configuration activity before widget is added to the screen

Flutter TextField - 如果输入的文本溢出如何缩小字体

flutter - Dart 中 map 的索引

python - 如果字典的键位于卡住集中,则检索值

dart - Flutter 中的文本字段验证

android - 如何在文本小部件 flutter 中显示 html 字符串

android-maven-插件 : deploy method that does not delete SharedPreferences