edit_pannel_bloc.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'package:app_flowy/home/domain/edit_context.dart';
  2. import 'package:dartz/dartz.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:freezed_annotation/freezed_annotation.dart';
  5. // ignore: import_of_legacy_library_into_null_safe
  6. import 'package:flutter_bloc/flutter_bloc.dart';
  7. part 'edit_pannel_bloc.freezed.dart';
  8. class EditPannelBloc extends Bloc<EditPannelEvent, EditPannelState> {
  9. EditPannelBloc() : super(EditPannelState.initial());
  10. @override
  11. Stream<EditPannelState> mapEventToState(
  12. EditPannelEvent event,
  13. ) async* {
  14. yield* event.map(
  15. startEdit: (e) async* {
  16. yield state.copyWith(isEditing: true, editContext: some(e.context));
  17. },
  18. endEdit: (value) async* {
  19. yield state.copyWith(isEditing: false, editContext: none());
  20. },
  21. );
  22. }
  23. }
  24. @freezed
  25. abstract class EditPannelEvent with _$EditPannelEvent {
  26. const factory EditPannelEvent.startEdit(EditPannelContext context) =
  27. _StartEdit;
  28. const factory EditPannelEvent.endEdit(EditPannelContext context) = _EndEdit;
  29. }
  30. @freezed
  31. abstract class EditPannelState implements _$EditPannelState {
  32. const factory EditPannelState({
  33. required bool isEditing,
  34. required Option<EditPannelContext> editContext,
  35. }) = _EditPannelState;
  36. factory EditPannelState.initial() => EditPannelState(
  37. isEditing: false,
  38. editContext: none(),
  39. );
  40. }