mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-07-25 18:06:00 +00:00

* refactor: rename structs * chore: read database id from view * chore: fix open database error because of create a database view for database id * chore: fix tests * chore: rename datbase id to view id in flutter * refactor: move grid and board to database view folder * refactor: rename functions * refactor: move calender to datbase view folder * refactor: rename app_flowy to appflowy_flutter * chore: reanming * chore: fix freeze gen * chore: remove todos * refactor: view process events * chore: add link database test * chore: just open view if there is opened database
57 lines
1.1 KiB
Dart
57 lines
1.1 KiB
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);
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
class Notifier extends ChangeNotifier {
|
|
void notify() {
|
|
notifyListeners();
|
|
}
|
|
}
|