home_bloc.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import 'package:app_flowy/workspace/application/edit_pannel/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. on<HomeEvent>((event, emit) async {
  9. await event.map(
  10. showLoading: (e) async {
  11. emit(state.copyWith(isLoading: e.isLoading));
  12. },
  13. setEditPannel: (e) async {
  14. emit(state.copyWith(pannelContext: some(e.editContext)));
  15. },
  16. dismissEditPannel: (value) async {
  17. emit(state.copyWith(pannelContext: none()));
  18. },
  19. forceCollapse: (e) async {
  20. emit(state.copyWith(forceCollapse: e.forceCollapse));
  21. },
  22. );
  23. });
  24. }
  25. @override
  26. Future<void> close() {
  27. return super.close();
  28. }
  29. }
  30. @freezed
  31. class HomeEvent with _$HomeEvent {
  32. const factory HomeEvent.showLoading(bool isLoading) = _ShowLoading;
  33. const factory HomeEvent.forceCollapse(bool forceCollapse) = _ForceCollapse;
  34. const factory HomeEvent.setEditPannel(EditPannelContext editContext) = _ShowEditPannel;
  35. const factory HomeEvent.dismissEditPannel() = _DismissEditPannel;
  36. }
  37. @freezed
  38. class HomeState with _$HomeState {
  39. const factory HomeState({
  40. required bool isLoading,
  41. required bool forceCollapse,
  42. required Option<EditPannelContext> pannelContext,
  43. }) = _HomeState;
  44. factory HomeState.initial() => HomeState(
  45. isLoading: false,
  46. forceCollapse: false,
  47. pannelContext: none(),
  48. );
  49. }