Flutter:如何打印共享首选项所有内容

Hou*_*sem 2 set sharedpreferences flutter

我想打印所有共享首选项内容(键,值)
键和值由用户给出

我尝试使用 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
       
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

预期输出:Key0 => Value0

Har*_*dia 6

我担心没有这样的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,
            );
          }),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)