使い始めて約半年になりますが、備忘録としてまとめてみました。
Riverpodとは
RiverPodは、Flutterの状態管理ライブラリの一つで、Providerパターンを実現するためのライブラリ。Flutterの機能であるInheritedWidgetとChangeNotifierを組み合わせて実装されているらしい。
状態の範囲を柔軟に指定でき、UIの状態をより明確に表現することができる。
RiverPodのメリット
RiverPodを使って便利だなと思った事を以下に挙げます。
状態管理が簡単
プロバイダーを定義して状態を提供することができるため、Flutterのみの状態管理に比べて必要なコードの量が減り、コードの可読性が良い。
状態の範囲を柔軟に指定できる
状態の範囲を柔軟に指定できるため、UIの状態をより明確に表現することができる。
例えば、ウィジェットの子孫にのみ状態を伝播させることができるため、状態の変更が想定外の場所で発生することがありません。
状態変更通知が簡単
ChangeNotifierを使用して状態変更通知を簡単に行うことができる。ChangeNotifierを継承することで、状態変更があった際に自動的に通知されるため、状態変更に伴う処理が簡単。
RiverPodを使う際の注意点
以下、RiverPodを使用する際に注意したい点をまとめてみました。
Providerの使い分け
RiverPodにはProviderという機能がありますが、Providerには複数の種類があります。例えばProvider、StateProvider、StreamProvider、FutureProviderなどです。これらを適切に使い分けることが大切です。例えば、単純な値を扱う場合にはProviderを使用し、複数のウィジェットから共有する値を扱う場合にはStateProviderを使用するといった具合に使い分けましょう。
データの型付け
RiverPodでは、値を提供する場合にデータの型付けが必要です。これにより、コンパイル時に型チェックを行うことができます。値の型が誤っている場合、コンパイル時にエラーが発生するため、バグの発生を防ぐことができます。
StateNotifierを活用する
RiverPodでは、StateNotifierという状態管理のためのクラスを提供しています。これを使うことで、状態の変更を容易に行うことができます。また、状態の変更に伴って、自動的にウィジェットが再構築されるため、状態管理をスムーズに行うことができます。
Providerのスコープ
RiverPodでは、Providerのスコープを定義することができます。例えば、ProviderScopeやScopedProviderなどです。これらを活用することで、必要な時に必要な範囲でProviderを提供することができます。適切なスコープを定義することで、不要な再構築を防ぎ、パフォーマンスを向上させることができます。
約半年使ってみて
慣れるまで非常に苦労しましたが、慣れるとすごく便利でRiverpod様様な感じです。
今後もRiverpod様におんぶにだっこで開発していきたいと思ってます。