【Flutter】初めてのRiverpod+Hooks+Freezed+Firebase

51090 ワード

はじめに

ご覧いただきありがとうございます。ganです。

最近のFlutter情報をキャッチアップしていると、Riverpod、Hooks、Freezedというのをよく聞きます。なので今回はそれらを使ったTODOアプリを作ってみて勉強になったこと、気になったところを紹介していきます。

アプリは以下の動画を真似て作りました。勉強のために少し変えている部分もあります。

最終的には以下のようなアプリになります。

対象者

  • Providerはある程度触ったことがある
  • Firebaseを使ったことがある
  • Riverpodを聞いたことはあるけど、まだそんなに触ったことがない
  • Freezed??🥶
  • Flutter Hooks?Hooks??

開発環境

MacBook Pro 2020 (Intel)
Flutter: 2.10.3 • channel stable
Dart: 2.16.1 • DevTools 2.9.2
IDE: VSCode

今回の内容

  1. Riverpodとは
  2. Freezedとは
  3. Flutter Hooksとは
  4. 実際にFirebaseも使って買い物リストアプリを作ってみる

1.Riverpodとは

RiverpodはDart, Flutterで使用できる「状態管理ライブラリ」です。「状態管理ライブラリ」にはProviderやBloc、GetXなどがあります。

このProviderという状態管理方法にはいくつか課題があります。

その課題とは、

  • 範囲外アクセスなどで、コンパイルエラーではなく実行時例外”ProviderNotFoundException”が発生する
  • 同じ型のproviderを複数同時に利用することができない
  • ChangeNotifierProviderなど「View」と「状態+ロジック」は分離できるが、「状態」と「ロジック」の分離ができない(限られた範囲でProviderを使用している場合に画面遷移をしたりするとProviderが破棄されてしまう)
    などです。

これらの課題を克服するために作られたのがRiverpodです。

今回はこのRiverpodを使っていきます。

Provider vs Riverpod

ProviderとRiverpod、どちらを使うかはかなり好みになるかと思います。初心者であればProviderのChangeNotifierProviderを使うのが分かりやすくていいと思います。いきなりRiverpodから入るとただ若干複雑なので一度Providerを触ってからでもいいと思います。またRiverpod自体新しく、バージョンの変更によって他の記事を見てやってもうまくいかないみたいなことが予想されるのも理由のひとつです。こんぶさんの記事