menu_bloc.dart 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'dart:async';
  2. import 'package:app_flowy/home/domain/page_context.dart';
  3. import 'package:dartz/dartz.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:freezed_annotation/freezed_annotation.dart';
  6. import 'package:flutter_bloc/flutter_bloc.dart';
  7. part 'menu_event.dart';
  8. part 'menu_state.dart';
  9. part 'menu_bloc.freezed.dart';
  10. class MenuBloc extends Bloc<MenuEvent, MenuState> {
  11. MenuBloc() : super(MenuState.initial());
  12. @override
  13. Stream<MenuState> mapEventToState(
  14. MenuEvent event,
  15. ) async* {
  16. yield* event.map(
  17. collapse: (e) async* {
  18. final isCollapse = state.isCollapse;
  19. yield state.copyWith(isCollapse: !isCollapse);
  20. },
  21. openPage: (e) async* {
  22. yield* _performActionOnOpenPage(e);
  23. },
  24. createApp: (e) async* {
  25. yield* _performActionOnCreateApp(e);
  26. },
  27. );
  28. }
  29. Stream<MenuState> _performActionOnOpenPage(_OpenPage e) async* {
  30. yield state.copyWith(pageContext: some(e.context));
  31. }
  32. Stream<MenuState> _performActionOnCreateApp(_CreateApp val) async* {
  33. yield state;
  34. }
  35. @override
  36. Future<void> close() {
  37. return super.close();
  38. }
  39. }