| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- import 'package:flutter/material.dart';
 
- abstract class Comparable<T> {
 
-   bool compare(T? previous, T? current);
 
- }
 
- class ObjectComparable<T> extends Comparable<T> {
 
-   @override
 
-   bool compare(T? previous, T? current) {
 
-     return previous == current;
 
-   }
 
- }
 
- class PublishNotifier<T> extends ChangeNotifier {
 
-   T? _value;
 
-   Comparable<T>? comparable = ObjectComparable();
 
-   PublishNotifier({this.comparable});
 
-   set value(T newValue) {
 
-     if (comparable != null) {
 
-       if (comparable!.compare(_value, newValue)) {
 
-         _value = newValue;
 
-         notifyListeners();
 
-       }
 
-     } else {
 
-       _value = newValue;
 
-       notifyListeners();
 
-     }
 
-   }
 
-   T? get currentValue => _value;
 
-   void addPublishListener(void Function(T) callback,
 
-       {bool Function()? listenWhen}) {
 
-     super.addListener(
 
-       () {
 
-         if (_value == null) {
 
-           return;
 
-         } else {}
 
-         if (listenWhen != null && listenWhen() == false) {
 
-           return;
 
-         }
 
-         callback(_value as T);
 
-       },
 
-     );
 
-   }
 
- }
 
- class Notifier extends ChangeNotifier {
 
-   void notify() {
 
-     notifyListeners();
 
-   }
 
- }
 
 
  |