Flutter:データの一時保存(SharedPreferences)

Flutter
スポンサーリンク

はじめに

今回はアプリを開発する上でよく用いられるデータの一時保存について紹介します。

 

まず、データの一時保存とは何かですが。

例えば、テキストフィールドに打ち込んだ文字を表示させるようなアプリを作る際に

文字が表示された状態でアプリを終了するとその文字は消えて無くなります。

 

このようにアプリを終了するたびにデータが消えるのは非常に不便です。

例えば、設定などを変更できる機能があってもその設定データを保存していない場合、アプリを終了するとデフォルトの設定に戻ってしまいます。

 

そこでデバイスにデータを一時的に保存し、起動時に呼び出せるようにしたいと考えます。

 

一時保存にはいくつか方法があるらしいのですが、今回は私が使っているSharedPreferencesパッケージを用いた方法を紹介します。

 

SharedPreferences

まずはじめに注意点として

データを一時保存するためのSharedPreferencesですが、保存できるデータ型は限られていて全てのデータ型には対応していません。

保存できるデータ型は

  • int
  • double
  • bool
  • String
  • List<String>

です。配列はStringでしか使用できないので注意してください。

 

SharedPreferencesの準備

SharedPreferencesはデータを保存するための機能を提供するパッケージです。

shared_preferences | Flutter Package
Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.

 

Flutterではパッケージを使っていろんな機能を簡単に使うことができます。カレンダーであったり、地図などもパッケージで簡単に実装することができます。

 

まずはパッケージを使えるようにするために”pabspec.yaml”ファイルの以下の部分に”shared_Preferences: バージョン”を入力してください。*インデントをflutterに揃えて書いてください。

 

次にエディター上部に”Packages get”とでるのでクリックしてパッケージをインストールします。(エディター下部のターミナルで”flutter packages get”コマンドでもできます。)

 

パッケージが使用できるようになったので、使用するdartファイルでインポートして準備完了です。

データの保存

SharedPreferencesでデータを扱う時はキー(Key)を設定し、キーと対応したデータの保存と読み出しを行います。 *キーはString型で指定します。

 

保存する時に使うメソッドは”.setデータ型”メソッドを使います。

  • int型:.setInt(“key”, int)
  • double型:.setDouble(“key”, double)
  • bool型:.setBool(“key”, bool)
  • String型:.setString(“key”, String)
  • List<String>型:.setStringList(“key”, List<String>)

 

実際の使用例

使用例からわかる通り、非同期での処理を行うようにできています。

 

データの読み出し

読み出しに関しても同様に”.getデータ型”メソッドが用意されています。

  • int型:.getInt(“key”)
  • double型:.getDouble(“key”)
  • bool型:.getBool(“key”)
  • String型:.getString(“key”)
  • List<String>型:.getStringList(“key”)

 

読み込みに関してはアプリを初めて使用する場合などそもそも保存されたデータがない場合がありメソッドがNULLを返す場合があることに注意しましょう。

またデータの読み込みはアプリが起動してはじめに行いたい処理であるため”initState”メソッドで使用することが多いでしょう。

 

この点を抑え、実際の使用例を見てください

 

使用例、サンプルコード

これらを用いて先ほどのテキストフィールドに打ち込んだ文字列を表示するアプリで実際に保存してみましょう。

保存と読み込みが成功しています。

以下にコード全体を載せます。

 

最後に

今回のサンプルでは単にString型のデータ1つを扱いましたが同様に複数のデータも扱え、使えるようになるとかなり便利で色々な応用がききます。

データの一時保存は開発を初めてすぐに覚えるべき機能の1つだと思うので抑えておくと良いと思います。

コメント