Open7

Riverpodの難しいところスクラップ

koji-1009koji-1009

AutoDisposeかどうか

koji-1009koji-1009

基本的に.autoDisposeをつける方向で統一したほうが良い。もしも参照するrefが無くなったときに、キャッシュとして残しておきたいものがあれば.keepAliveを有効にすればOK。

koji-1009koji-1009

AutoDisposeProviderProvider を比べると、AutoDisposeProvider ではなく Provider を選択する必要がないこと。また AutoDisposeProvider の中では、 Provider を参照できないこと。この2点にも注意しておいたほうが良い。

koji-1009koji-1009

ConsumerWidgetConsumerStatefulWidgetStatefulWidgetの関係。
また、HookWidgetHookConsumerWidgetの関係。

koji-1009koji-1009

Consumer系のWidgetはStatefulWidgetを継承している。

https://github.com/rrousselGit/riverpod/blob/riverpod-v2.4.0/packages/flutter_riverpod/lib/src/consumer.dart

class Consumer extends ConsumerWidget {
abstract class ConsumerWidget extends ConsumerStatefulWidget {
abstract class ConsumerStatefulWidget extends StatefulWidget {

HookConsumer系のWidgetは、StatefulWidgetの継承になる。

https://github.com/rrousselGit/riverpod/blob/riverpod-v2.4.0/packages/hooks_riverpod/lib/src/consumer.dart

class HookConsumer extends HookConsumerWidget {
abstract class HookConsumerWidget extends ConsumerWidget {
abstract class StatefulHookConsumerWidget extends ConsumerStatefulWidget {

ただ、HookWidgetStatelessWidgetの継承になっている。
このため、HookWidgetからHookConsumerWidgetにクラスを変えると、StatelessWidgetからStatefulWidgetに変更していることになる。

https://github.com/rrousselGit/flutter_hooks/blob/v0.18.5%2B1/packages/flutter_hooks/lib/src/framework.dart#L565

abstract class HookWidget extends StatelessWidget {