LCOV - code coverage report
Current view: top level - lib/provider - state_notifier_provider.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 13 13 100.0 %
Date: 2023-10-11 10:27:27 Functions: 0 0 -

          Line data    Source code
       1             : // ignore_for_file: invalid_use_of_protected_member
       2             : 
       3             : import '../notifiers/state_notifier.dart';
       4             : import 'base_provider.dart';
       5             : import 'providers_container.dart';
       6             : 
       7             : abstract class BaseStateNotifierProvider<N, S> {}
       8             : 
       9             : abstract class ListeneableProvider<N extends StateNotifier<S>, S, A>
      10             :     extends BaseProvider<N, A> implements BaseStateNotifierProvider<N, S> {
      11           3 :   ListeneableProvider(
      12             :     super.callback, {
      13             :     super.autoDispose,
      14             :   });
      15             : 
      16           3 :   @override
      17             :   Element<N>? dispose({String? tag}) {
      18           3 :     final element = super.dispose(tag: tag);
      19             : 
      20           3 :     final notifier = element?.value;
      21             :     if (notifier != null) {
      22           3 :       notifier.dispose();
      23             :     }
      24             :     return element;
      25             :   }
      26             : 
      27           3 :   @override
      28             :   void onElementValueAssigned(Element<N> element, bool autoDispose) {
      29             :     if (autoDispose) {
      30           6 :       element.value?.setDisposableCallback(
      31           6 :         () => dispose(
      32           6 :           tag: element.ref.tag,
      33             :         ),
      34             :       );
      35             :     }
      36             :   }
      37             : }
      38             : 
      39             : class StateNotifierProvider<N extends StateNotifier<S>, S>
      40             :     extends ListeneableProvider<N, S, dynamic> {
      41           3 :   StateNotifierProvider(
      42             :     super.creator, {
      43             :     super.autoDispose,
      44             :   });
      45             : 
      46           1 :   static StateNotifierArgumentsProvider<N, S, A>
      47             :       withArguments<N extends StateNotifier<S>, S, A>(
      48             :     CreatorCallback<N, A> callback, {
      49             :     bool autoDispose = true,
      50             :   }) {
      51           1 :     return StateNotifierArgumentsProvider(
      52             :       callback,
      53             :       autoDispose: autoDispose,
      54             :     );
      55             :   }
      56             : }
      57             : 
      58             : class StateNotifierArgumentsProvider<N extends StateNotifier<S>, S, A>
      59             :     extends ListeneableProvider<N, S, A> {
      60           1 :   StateNotifierArgumentsProvider(
      61             :     super.creator, {
      62             :     super.autoDispose,
      63             :   });
      64             : }

Generated by: LCOV version 1.16