私はこの機能を持っています:
Future<String> load(SharedPreferences prefs, String fileName) async {
prefs = await SharedPreferences.getInstance();
String jsonString = prefs.getString(fileName) ?? "";
if (jsonString.isNotEmpty) {
return jsonString;
}else{
return ...
}
}
Elseの場合、何を返すべきですか? 「」で試しましたが、うまくいきません。
答えは「依存する」です。つまり、この関数の結果を正確に何に使っているか、そしてそのコンテキストで空のデフォルト値が何を意味するかに依存します。
あなたが decoding として返された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");
Flutterでは、共有設定を使用してプリミティブデータ(int
、double
、bool
、string
、およびstringList
)を保存します。このデータはアプリに関連付けられているため、ユーザーがアプリをアンインストールすると、データも削除されます。
shared_preferences pubのプラグインは、Android SharedPreferences
およびiOS NSUserDefaults
のラッパーです。このプラグインは、_shared_preferences
_行を依存関係セクションのpubspec.yamlファイルに追加します。
_dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.4.3
_
バージョン番号を current oneに変更します。
共有設定が必要なファイルに、次のインポートを追加します。
_import 'package:shared_preferences/shared_preferences.Dart';
_
共有設定オブジェクトを取得するには、次を実行できます。
_final prefs = await SharedPreferences.getInstance();
_
これは、以下のすべての例で使用されます。
final myInt = prefs.getInt('my_int_key') ?? 0;
prefs.setInt('my_int_key', 42);
final myDouble = prefs.getDouble('my_double_key') ?? 0.0;
prefs.setDouble('my_double_key', 3.14);
final myBool = prefs.getBool('my_bool_key') ?? false;
prefs.setBool('my_bool_key', true);
final myString = prefs.getString('my_string_key') ?? '';
prefs.setString('my_string_key', 'hello');
final myStringList = prefs.getStringList('my_string_list_key') ?? [];
prefs.setStringList('my_string_list_key', ['horse', 'cow', 'sheep']);