アプリ内で独自の設定を作る場合、そのデータを保持する方法を考える必要があります。
SQL、テキストファイルなど選択肢は多々ありますが、shared_preferences
というパッケージを使えば簡単に実装することができます。
下準備
まずはpubspec.yaml
のdependencies
にshared_preferences
のパッケージを追加します。この記事を書いている時点での最新は2.0.6でした。
dependencies:
shared_preferences: ^2.0.6
下準備はたったこれだけです。以降、アプリへの組み込みをしていきます。
アプリに組み込んでみる
インスタンスの取得
値を読み書きはSharedPreferences
のインスタンスを介して行います。インスタンスの取得処理は以下の通りです。ちなみに非同期関数になります。
SharedPreferences prefs = await SharedPreferences.getInstance();
値の読み書き
取得したインスタンスに対しては、値の型に応じたsetter/getterのAPIを使って中身にアクセスすることができます。Ver2.0.6時点では以下の型に対応しています。
・Double(小数)
・Bool(真偽値)
・String(文字列)
・List(文字列リスト)
内部的にはKey-Valueの形式で保存されているため、各APIはキーと値を指定する形になります。Intの場合、setter/getterはそれぞれ以下のように定義されています。
// Setter
Future setInt( String key, int value )
// Getter
int? getInt( String key )
実装してみる
これらを使って、実装してみるとこんな感じになります。このようにAPIをラップしてあげると使い勝手がよく便利です。
import 'package:shared_preferences/shared_preferences.dart';
const String _KEY_HOGE = "hogehoge";
Future<int> getHoge() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
int ret = prefs.getInt(_KEY_HOGE ) ?? 0;
return ret;
}
void setHoge(int value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setInt(_KEY_HOGE, value);
}
これでアプリ内に設定値を保存できるようになりました。複雑なデータは保存できないものの、オン/オフや数値などの簡単なデータであればとても楽に扱うことができます。
自作アプリに設定値を作りたい方はぜひ試してみてはいかがでしょうか?
ではでは