0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘録】Flutterの状態管理ライブラリRiverpodについて

Posted at

使い始めて約半年になりますが、備忘録としてまとめてみました。

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様におんぶにだっこで開発していきたいと思ってます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?