setting_bloc.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 databaseId;
  8. GridSettingBloc({required this.databaseId})
  9. : super(GridSettingState.initial()) {
  10. on<GridSettingEvent>(
  11. (event, emit) async {
  12. event.map(performAction: (_PerformAction value) {
  13. emit(state.copyWith(selectedAction: Some(value.action)));
  14. });
  15. },
  16. );
  17. }
  18. @override
  19. Future<void> close() async {
  20. return super.close();
  21. }
  22. }
  23. @freezed
  24. class GridSettingEvent with _$GridSettingEvent {
  25. const factory GridSettingEvent.performAction(GridSettingAction action) =
  26. _PerformAction;
  27. }
  28. @freezed
  29. class GridSettingState with _$GridSettingState {
  30. const factory GridSettingState({
  31. required Option<GridSettingAction> selectedAction,
  32. }) = _GridSettingState;
  33. factory GridSettingState.initial() => GridSettingState(
  34. selectedAction: none(),
  35. );
  36. }
  37. enum GridSettingAction {
  38. showFilters,
  39. sortBy,
  40. showProperties,
  41. }