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

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

この記事からわかること

  • Flutter/Dartflutter_secure_storage実装方法
  • ローカルデータセキュア保存するには?

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Flutterアプリで端末(ローカル)にデータを永続的に保存する方法

FlutterでiOS/Androidアプリを開発する際に端末(ローカル)にデータを永続的に保存する方法はいくつか用意されています。

それぞれに一長一短がありますが今回は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 パッケージ名コマンドを実行します。

$ flutter pub add flutter_secure_storage

これでパッケージの導入が完了し、import文を追加すれば使用できるようになります。

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

実装方法

flutter_secure_storageを使用するにはまずFlutterSecureStorageインスタンスを取得する必要があります。このインスタンスを使用して保存や取得などを行なっていきます。

final _storage = FlutterSecureStorage();

データを保存する

データを保存したい場合write(キー,値)メソッドを使用します。引数にデータを保存するためのキー実際に保存したい値を指定します。呼び出しにはasyncが付与されている非同期処理になるのでawaitを使用して呼び出す必要があります。

// 保存
await storage.write(key: 'userToken', value: 'abc123');

データを取得する

データを取得したい場合read(キー)メソッドを使用します。引数にデータを取得するためのキーを指定します。こちらも非同期処理になるのでawaitを使用して呼び出す必要があります。

String? token = await storage.read(key: 'userToken');
print(token);

またデータが存在しなかった場合nullが返却されます。

データを削除する

一度保存したデータはアプリがアンインストールされない限り永続化されます。データを明示的に削除したい場合delete(キー)メソッドを使用します。また全てのデータを削除したい場合はdeleteAllメソッドを使用します。

// 指定して削除
await storage.delete(key: 'userToken');

// 全て削除
await storage.deleteAll();

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article