結論から書くとこんな感じです
StatelessWidget → 表示 or provider変数のみ変更
StatefulWidget → いらん
ConsumerWidget → 部品
ConsumerStatefulWidget → 変数 + provider変数
なんで上記に至ったのかというところを簡単にそれぞれ解説します
StatelessWidgetを表示またはProvider変数のみ変更する場合に使用する理由
そもそもStatelessWidget単体では値の変更とかできないからですね
でもProviderはそんな値とか変更できないStatelessWidgetでも変更可能なんですよね
なので、文字や数字などは基本固定のものの表示&Provider変数のみ変更したいなみたいな感じの場合こちらを利用するのがいいのかなと
ぶっちゃけた話ConsumerStatefulWidgetがあればなんでも対応可能だと思うんですけど、パフォーマンスの最適化を考慮することとか考えると上記みたいな感じの場合はこちらを使用するのがいいかなって感じました
StatefulWidgetがいらん理由
ConsumerWidgetとConsumerStatefulWidgetはStatefulWidgetを拡張して作られているからですね
強いていうのであれば、Provider変数を全く使わない場合はこちらを利用するくらいの感じかなと
今回の内容で言えばProviderにフォーカスしてるのでいらんという回答になりました
ConsumerWidgetを部品の作成で利用する理由
provider変数のみ変更ならStatelessWidget使うし、変数 + provider変数ならConsumerStatefulWidget使うからこれいらなくね?
って思ってたんですけど、まぁよくよく考えてみてソースが大きすぎたり、共通化部品を作りたい場合のことを考えた時に「あーこれ使えばええんか」ってなりました
ただ慣れない人が作るとプロジェクトが大きくなった時に間違いなくバグると思うので、ある程度理解してからやるのが吉かなって個人には思います
ConsumerStatefulWidgetを変数&provider変数の場合に利用する理由
それ以外で使用する意味がないなと
Provider変数であればStatelessWidgetで変更できるし、わざわざこちらを利用する意味があるとしたらそれくらいかなと
全てProvider変数で管理しているなんて案件であれば必要ないですが、そんなプロジェクトはほぼないかなと思うんでこういう結論に至りました
まとめ
基本的にそんなに勉強したりとか好きじゃないんですけど、Providerは割といろんな案件で使われてるんで今回ちょっと勉強してよかったなって思いました
ただ個人的に言えば別にシングルトンパターンでも同じことはできるし、Providerに固執する必要もないかなって感じです
どなたかの参考になれば幸いです
ではまた