util.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'package:appflowy/startup/plugin/plugin.dart';
  2. import 'package:appflowy/workspace/application/view/view_listener.dart';
  3. import 'package:dartz/dartz.dart';
  4. import 'package:appflowy_backend/log.dart';
  5. import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
  6. import 'package:flutter/material.dart';
  7. class ViewPluginNotifier extends PluginNotifier<Option<DeletedViewPB>> {
  8. final ViewListener? _viewListener;
  9. ViewPB view;
  10. @override
  11. final ValueNotifier<Option<DeletedViewPB>> isDeleted = ValueNotifier(none());
  12. @override
  13. final ValueNotifier<int> isDisplayChanged = ValueNotifier(0);
  14. ViewPluginNotifier({
  15. required this.view,
  16. }) : _viewListener = ViewListener(view: view) {
  17. _viewListener?.start(
  18. onViewUpdated: (result) {
  19. result.fold(
  20. (updatedView) {
  21. view = updatedView;
  22. isDisplayChanged.value = updatedView.hashCode;
  23. },
  24. (err) => Log.error(err),
  25. );
  26. },
  27. onViewMoveToTrash: (result) {
  28. result.fold(
  29. (deletedView) => isDeleted.value = some(deletedView),
  30. (err) => Log.error(err),
  31. );
  32. },
  33. );
  34. }
  35. @override
  36. void dispose() {
  37. isDeleted.dispose();
  38. isDisplayChanged.dispose();
  39. _viewListener?.stop();
  40. }
  41. }