🍄
StateProvider.autoDisposeの使い方
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