💽

【Flutter】flutter_hiveの超基本的な使い方

2025/01/20に公開

※自分用メモ:Notionで過去に書いたもの

こんにちは、laughtaoneです。
Flutter学習中に備忘録として書いていますので、正確な情報でない可能性もありますのでご了承ください。

Hiveとは

NoSQLのようなものを、Flutterアプリのローカル上で使う場合に有名なのが「Hive (hive_flutter)」です。

前提

以降のコードは、次のコードで box が定義されたとします:

final box = Hive.box<SongInfo>('songInfo');

基本的なコマンド

キーと値を指定して格納する

box.put('キー名',);
  • キー名と値を指定して、データベースに格納するコマンド
  • キー名を自分で決めて、キーと値のセットを登録する時に使う
  • キーに対応する値を更新する時にも使う

値を指定して格納する

box.add();
  • 値を指定して、データベースに格納するコマンド
  • キーは自動的に生成されるため、キーを気にせず、値を登録する時に使う
  • キーに対応する値の更新時には使えない

キーに対応する値を取得する

box.get('キー名');
box.get('キー名', defaultValue: デフォ値);
  • キーを指定して、キーに対応する値を取得するコマンド
  • 2行目のように、defaultValue を使うと、キーに対応する値がなかったときに返す値を設定できる

キーと値を削除する

box.delete('キー名');
  • キーを指定して、キーとキーに対応する値を削除するコマンド

地味に便利なコマンド

ボックスの全ての要素の値をリストに変換

box.values.toList();
  • 例えば、下のコードによってデータがboxに入れられた場合、
    box.put('song1', SongInfo('Subtile', 2022));
    box.put('song2', SongInfo('Pretender', 2019));
    box.put('song3', SongInfo('Same Blue', 2024));
    
    box.values.toList(); を実行すると、次のようなリストが返される:
    [
        SongInfo('Subtile', 2022),
        SongInfo('Pretender', 2019),
        SongInfo('Same Blue', 2024)
    ]
    

ボックスの全ての要素のキーと値のペアをマップに変換

box.toMap();
  • 例えば、下のコードによってデータがboxに入れられた場合、
    box.put('song1', SongInfo('Subtile', 2022));
    box.put('song2', SongInfo('Pretender', 2019));
    box.put('song3', SongInfo('Same Blue', 2024));
    
    box.toMap(); を実行すると、次のようなマップが返される:
    {
        'song1': SongInfo('Subtile', 2022),
        'song2': SongInfo('Pretender', 2019),
        'song3': SongInfo('Same Blue', 2024)
    }
    
    • このマップからキーと値をfor文で出力させるコード:
      (SongInfoは、nameとyearを持つとする)
      for (var entry in box.toMap().entries) {
          var key = entry.key;
          var value = entry.value;
          debugPrint('キーは$key・曲名は${value.name}/発売年は${value.year}');	
      }
      

まとめ

これらが、flutter_hiveの超基本的な使い方です。

Discussion