doc_edit_bloc.dart 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:app_flowy/workspace/domain/i_doc.dart';
  2. import 'package:freezed_annotation/freezed_annotation.dart';
  3. import 'package:flutter_bloc/flutter_bloc.dart';
  4. part 'doc_edit_bloc.freezed.dart';
  5. class DocEditBloc extends Bloc<DocEditEvent, DocEditState> {
  6. final IDoc iDocImpl;
  7. DocEditBloc(this.iDocImpl) : super(DocEditState.initial());
  8. @override
  9. Stream<DocEditState> mapEventToState(DocEditEvent event) async* {
  10. yield* event.map(
  11. initial: (e) async* {},
  12. close: (Close value) async* {
  13. iDocImpl.closeDoc();
  14. },
  15. changeset: (Changeset changeset) async* {
  16. iDocImpl.applyChangeset(json: changeset.data);
  17. },
  18. save: (Save save) async* {
  19. iDocImpl.saveDoc(json: save.data);
  20. });
  21. }
  22. }
  23. @freezed
  24. abstract class DocEditEvent with _$DocEditEvent {
  25. const factory DocEditEvent.initial() = Initial;
  26. const factory DocEditEvent.changeset(String data) = Changeset;
  27. const factory DocEditEvent.save(String data) = Save;
  28. const factory DocEditEvent.close() = Close;
  29. }
  30. @freezed
  31. abstract class DocEditState implements _$DocEditState {
  32. const factory DocEditState({
  33. required bool isSaving,
  34. }) = _DocEditState;
  35. factory DocEditState.initial() => const DocEditState(
  36. isSaving: false,
  37. );
  38. }