setting_bloc.dart 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'package:flutter_bloc/flutter_bloc.dart';
  2. import 'package:freezed_annotation/freezed_annotation.dart';
  3. import 'dart:async';
  4. import 'package:dartz/dartz.dart';
  5. part 'setting_bloc.freezed.dart';
  6. class GridSettingBloc extends Bloc<GridSettingEvent, GridSettingState> {
  7. final String gridId;
  8. GridSettingBloc({required this.gridId}) : super(GridSettingState.initial()) {
  9. on<GridSettingEvent>(
  10. (event, emit) async {
  11. event.map(performAction: (_PerformAction value) {
  12. emit(state.copyWith(selectedAction: Some(value.action)));
  13. });
  14. },
  15. );
  16. }
  17. @override
  18. Future<void> close() async {
  19. return super.close();
  20. }
  21. }
  22. @freezed
  23. class GridSettingEvent with _$GridSettingEvent {
  24. const factory GridSettingEvent.performAction(GridSettingAction action) =
  25. _PerformAction;
  26. }
  27. @freezed
  28. class GridSettingState with _$GridSettingState {
  29. const factory GridSettingState({
  30. required Option<GridSettingAction> selectedAction,
  31. }) = _GridSettingState;
  32. factory GridSettingState.initial() => GridSettingState(
  33. selectedAction: none(),
  34. );
  35. }
  36. enum GridSettingAction {
  37. showFilters,
  38. sortBy,
  39. showProperties,
  40. }