You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.7KB

  1. import 'dart:async';
  2. import 'package:bloc/bloc.dart';
  3. import 'package:equatable/equatable.dart';
  4. import 'package:farm_tpf/custom_model/NurseryDetail.dart';
  5. import 'package:farm_tpf/utils/const_common.dart';
  6. import 'package:meta/meta.dart';
  7. part 'status_add_form_event.dart';
  8. part 'status_add_form_state.dart';
  9. class StatusAddFormBloc extends Bloc<StatusAddFormEvent, StatusAddFormState> {
  10. StatusAddFormBloc() : super(Initial());
  11. @override
  12. Stream<StatusAddFormState> mapEventToState(
  13. StatusAddFormEvent event,
  14. ) async* {
  15. if (event is Changed) {
  16. switch (event.status) {
  17. case CRUDStatus.edit:
  18. var index = event.index;
  19. var item = NurseryDetail.clone(event.nurseryDetail);
  20. List<NurseryDetail> items = new List<NurseryDetail>();
  21. for (int i = 0; i < event.items.length; i++) {
  22. var current = event.items[i];
  23. items.add(NurseryDetail.clone(current));
  24. }
  25. yield new Edit(nurseryDetail: item, index: index, items: items);
  26. break;
  27. case CRUDStatus.delete:
  28. if (event.items.isEmpty) {
  29. break;
  30. }
  31. var index = event.index;
  32. var item = NurseryDetail.clone(event.nurseryDetail);
  33. List<NurseryDetail> items = new List<NurseryDetail>();
  34. for (int i = 0; i < event.items.length; i++) {
  35. var current = event.items[i];
  36. if (i == index) {
  37. //
  38. } else {
  39. items.add(NurseryDetail.clone(current));
  40. }
  41. }
  42. yield new Delete(nurseryDetail: item, index: index, items: items);
  43. break;
  44. default:
  45. yield Initial();
  46. }
  47. } else if (event is Reset) {
  48. yield Initial();
  49. }
  50. }
  51. }