Ответ "это зависит".А именно, это зависит от того, что именно вы делаете с результатом этой функции, и что означает хорошее пустое значение по умолчанию в этом контексте.
Предполагая, что вы декодируете возвращенную строку JSONв Map<String, dynamic>
, тогда хорошим значением по умолчанию может быть пустая карта.В этом случае вы можете переформулировать свою функцию следующим образом:
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");