Flutter:共享首选项 [英] Flutter: shared preferences

查看:111
本文介绍了Flutter:共享首选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有此功能:

  Future<String> load(SharedPreferences prefs, String fileName) async {
    prefs = await SharedPreferences.getInstance();
    String jsonString = prefs.getString(fileName) ?? "";
    if (jsonString.isNotEmpty) {
      return jsonString;
    }else{
      return ...
    }
  }

在其他情况下我应该返回什么?我尝试使用,但不起作用。

What should I return in the else case? I tried with "" but it doesn't work.

推荐答案

答案是取决于。即,这取决于您对该函数的结果执行的确切操作,以及在该情况下正确的空默认值意味着什么。

The answer is "it depends". Namely, it depends on what exactly you are doing with the result of this function, and what a good empty default value means in that context.

假设您解码将返回的JSON字符串转换为 Map< String,dynamic> ,那么一个好的默认值可能是空地图。在这种情况下,您可以按如下所示重新构造函数:

Assuming you're decoding the returned JSON string into a Map<String, dynamic>, then a good default value might be the empty map. In that case, you could reformulate your function as follows:

Future<String> loadJSON(final String fileName) async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  final String jsonString = prefs.getString(fileName);
  if (jsonString != null && jsonString.isNotEmpty) {
    return jsonString;
  }
  return "{}"; // default value
}

final String jsonString = await loadJSON("test.json");

final Map<String, dynamic> jsonData = json.decode(jsonString);

但是,重新定义此过程作为返回实际地图的略高级别的函数可能更有意义值:

However, it probably makes more sense to reformulate this procedure as a slightly higher-level function returning actual map values:

Future<Map<String, dynamic>> loadData(final String fileName) async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  final String jsonString = prefs.getString(fileName);
  if (jsonString != null && jsonString.isNotEmpty) {
    return json.decode(jsonString);
  }
  return Map(); // default value
}

final Map<String, dynamic> jsonData = await loadData("test.json");

这篇关于Flutter:共享首选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆