home_bloc.dart 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'package:app_flowy/workspace/domain/edit_context.dart';
  2. import 'package:flutter_bloc/flutter_bloc.dart';
  3. import 'package:freezed_annotation/freezed_annotation.dart';
  4. import 'package:dartz/dartz.dart';
  5. part 'home_bloc.freezed.dart';
  6. class HomeBloc extends Bloc<HomeEvent, HomeState> {
  7. HomeBloc() : super(HomeState.initial());
  8. @override
  9. Stream<HomeState> mapEventToState(
  10. HomeEvent event,
  11. ) async* {
  12. yield* event.map(
  13. showLoading: (e) async* {
  14. yield state.copyWith(isLoading: e.isLoading);
  15. },
  16. setEditPannel: (e) async* {
  17. yield state.copyWith(editContext: some(e.editContext));
  18. },
  19. dismissEditPannel: (value) async* {
  20. yield state.copyWith(editContext: none());
  21. },
  22. forceCollapse: (e) async* {
  23. yield state.copyWith(forceCollapse: e.forceCollapse);
  24. },
  25. );
  26. }
  27. @override
  28. Future<void> close() {
  29. return super.close();
  30. }
  31. }
  32. @freezed
  33. class HomeEvent with _$HomeEvent {
  34. const factory HomeEvent.showLoading(bool isLoading) = _ShowLoading;
  35. const factory HomeEvent.forceCollapse(bool forceCollapse) = _ForceCollapse;
  36. const factory HomeEvent.setEditPannel(EditPannelContext editContext) =
  37. _ShowEditPannel;
  38. const factory HomeEvent.dismissEditPannel() = _DismissEditPannel;
  39. }
  40. @freezed
  41. class HomeState with _$HomeState {
  42. const factory HomeState({
  43. required bool isLoading,
  44. required bool forceCollapse,
  45. required Option<EditPannelContext> editContext,
  46. }) = _HomeState;
  47. factory HomeState.initial() => HomeState(
  48. isLoading: false,
  49. forceCollapse: false,
  50. editContext: none(),
  51. );
  52. }