🍄

StateProvider.autoDisposeの使い方

2025/02/07に公開

StateProvider.autoDisposeの使い方です。
下記のselectedHour、selectedMinute、isNotificationEnabledは、修正前StateProviderを使ってグローバルにしてました。

final selectedHour = StateProvider<int>((ref) => TimeOfDay.now().hour);
final selectedMinute = StateProvider<int>((ref) => TimeOfDay.now().minute);
final isNotificationEnabled = StateProvider<bool>((ref) => false);

ですが、selectedHour、selectedMinute、isNotificationEnabledは目標設定画面のみでしか使用しないので、このままだとアプリが開いている限りメモリに残るため、不要な状態を持ち続けることになります。

そのため画面を閉じたら(Navigator.pop(context) や Navigator.pushAndRemoveUntilしたら)自動的にデータを破棄するautoDisposeに修正しました。

final selectedHour = StateProvider.autoDispose<int>((ref) => TimeOfDay.now().hour);
final selectedMinute = StateProvider.autoDispose<int>((ref) => TimeOfDay.now().minute);
final isNotificationEnabled = StateProvider.autoDispose<bool>((ref) => false);

これで、メモリの無駄遣いを防ぐことができます。

Discussion