web-dev-qa-db-ja.com

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 ...
    }
  }

Elseの場合、何を返すべきですか? 「」で試しましたが、うまくいきません。

8
Little Monkey

答えは「依存する」です。つまり、この関数の結果を正確に何に使っているか、そしてそのコンテキストで空のデフォルト値が何を意味するかに依存します。

あなたが 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");
4
Arto Bendiken

共有設定

Flutterでは、共有設定を使用してプリミティブデータ(intdoubleboolstring、および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();
_

これは、以下のすべての例で使用されます。

int

  • 読み取り: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');

stringList

  • 読み取り:final myStringList = prefs.getStringList('my_string_list_key') ?? [];
  • 書き込み:prefs.setStringList('my_string_list_key', ['horse', 'cow', 'sheep']);

こちらもご覧ください

7
Suragch