mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-31 01:54:37 +00:00 
			
		
		
		
	 92ceb2cd7d
			
		
	
	
		92ceb2cd7d
		
			
		
	
	
	
	
		
			
			* fix: limit length when renaming views * chore: clean up database listeners * fix: dispose of controllers properly * fix: dispose of resources properly * fix: deleting filters with same name * chore: extend DatabaseTabBarItemBuilder * fix: null check on null value
		
			
				
	
	
		
			51 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
| 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);
 | |
|       },
 | |
|     );
 | |
|   }
 | |
| }
 |