答案是"视情况而定".也就是说,这取决于您对此函数的结果到底做了什么,以及一个好的空默认值在该上下文中意味着什么.
假设您将返回的JSON字符串转换为Map<String, dynamic>
的值为decoding,那么较好的默认值可能是空映射.在这种情况下,您可以按如下方式重新表述您的函数:
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);
但是,将此过程重新表述为返回实际映射值的稍高级别的函数可能更有意义:
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");