page_stack_bloc.dart 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import 'package:app_flowy/home/domain/page_stack/page_stack.dart';
  2. import 'package:app_flowy/home/presentation/widgets/blank_page.dart';
  3. import 'package:freezed_annotation/freezed_annotation.dart';
  4. import 'package:flutter_bloc/flutter_bloc.dart';
  5. part 'page_stack_bloc.freezed.dart';
  6. class PageStackBloc extends Bloc<PageStackEvent, PageStackState> {
  7. PageStackBloc() : super(PageStackState.initial());
  8. @override
  9. Stream<PageStackState> mapEventToState(
  10. PageStackEvent event,
  11. ) async* {
  12. yield* event.map(setContext: (NewPageContext value) async* {
  13. yield state.copyWith(pageContext: value.newContext);
  14. });
  15. }
  16. }
  17. @freezed
  18. abstract class PageStackEvent with _$PageStackEvent {
  19. const factory PageStackEvent.setContext(PageContext newContext) =
  20. NewPageContext;
  21. }
  22. @freezed
  23. abstract class PageStackState implements _$PageStackState {
  24. const factory PageStackState({
  25. required PageContext pageContext,
  26. }) = _PageStackState;
  27. factory PageStackState.initial() => const PageStackState(
  28. pageContext: BlankPageContext(),
  29. );
  30. }