setting_bloc.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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) = _PerformAction;
  25. }
  26. @freezed
  27. class GridSettingState with _$GridSettingState {
  28. const factory GridSettingState({
  29. required Option<GridSettingAction> selectedAction,
  30. }) = _GridSettingState;
  31. factory GridSettingState.initial() => GridSettingState(
  32. selectedAction: none(),
  33. );
  34. }
  35. enum GridSettingAction {
  36. filter,
  37. sortBy,
  38. properties,
  39. }