doc_edit_bloc.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. changeset: (Changeset changeset) async* {
  14. iDocImpl.updateWithChangeset(text: changeset.data);
  15. },
  16. save: (Save save) async* {
  17. iDocImpl.saveDoc(text: save.data);
  18. });
  19. }
  20. }
  21. @freezed
  22. abstract class DocEditEvent with _$DocEditEvent {
  23. const factory DocEditEvent.initial() = Initial;
  24. const factory DocEditEvent.changeset(String data) = Changeset;
  25. const factory DocEditEvent.save(String data) = Save;
  26. const factory DocEditEvent.close() = Close;
  27. }
  28. @freezed
  29. abstract class DocEditState implements _$DocEditState {
  30. const factory DocEditState({
  31. required bool isSaving,
  32. }) = _DocEditState;
  33. factory DocEditState.initial() => const DocEditState(
  34. isSaving: false,
  35. );
  36. }