【Flutter/Dart】flutter_secure_storageの使い方!KeyChain/KeyStoreで安全に保存

この記事からわかること
- Flutter/Dartのflutter_secure_storageの実装方法
- ローカルにデータをセキュアに保存するには?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Koala
- Xcode:16.0
- Flutter:3.29.2
- Dart:3.7.2
- flutter_secure_storage:9.2.4
- Mac M1:Sequoia 15.4
Flutterアプリで端末(ローカル)にデータを永続的に保存する方法
FlutterでiOS/Androidアプリを開発する際に端末(ローカル)にデータを永続的に保存する方法はいくつか用意されています。
- shared_preferences
- sqflite
- Realm
- flutter_secure_storage
- テキストファイル
それぞれに一長一短がありますが今回はflutter_secure_storage
を使用する方法をまとめていきます。
flutter_secure_storage
公式リファレンス:flutter_secure_storage
flutter_secure_storage
はセキュアにローカルにデータを保存するための機能を提供しているパッケージです。独自の仕組みというよりiOS/Android固有のセキュアな永続ストレージ機能をラップして共通して実装できるようになっているのがこのパッケージです。
iOSはKeyChain、AndroidはKeyStoreの仕組みがラップされています。ラップしているだけなので仕組みはそれぞれの要件を確認する必要がありますが、データを永続化できることと大事なデータ(ログイン情報など)は格納しないという点は共通かと思います。
単に小さなデータを保存したいだけならshared_preferences
はパッケージがおすすめです。これもiOSはUserDefaults、AndroidはSharedPreferencesの仕組みがラップされています。
またサポートされているデータ型はString
のみになっています。shared_preferences
は色々な型を保存することができるので要件に合わせて使い分ける必要があります。
導入方法
パッケージを導入するにはプロジェクトルートでflutter pub add パッケージ名
コマンドを実行します。
これでパッケージの導入が完了し、import
文を追加すれば使用できるようになります。
実装方法
flutter_secure_storage
を使用するにはまずFlutterSecureStorage
インスタンスを取得する必要があります。このインスタンスを使用して保存や取得などを行なっていきます。
データを保存する
データを保存したい場合はwrite(キー,値)
メソッドを使用します。引数にデータを保存するためのキーと実際に保存したい値を指定します。呼び出しにはasync
が付与されている非同期処理になるのでawait
を使用して呼び出す必要があります。
データを取得する
データを取得したい場合はread(キー)
メソッドを使用します。引数にデータを取得するためのキーを指定します。こちらも非同期処理になるのでawait
を使用して呼び出す必要があります。
またデータが存在しなかった場合はnull
が返却されます。
データを削除する
一度保存したデータはアプリがアンインストールされない限り永続化されます。データを明示的に削除したい場合はdelete(キー)
メソッドを使用します。また全てのデータを削除したい場合はdeleteAll
メソッドを使用します。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。