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.

53 lines
1.5KB

  1. import 'dart:async';
  2. import 'package:bloc/bloc.dart';
  3. import 'package:equatable/equatable.dart';
  4. import 'package:farm_tpf/custom_model/action_form/CommonData.dart';
  5. import 'package:farm_tpf/data/repository/repository.dart';
  6. import 'package:meta/meta.dart';
  7. part 'common_data_event.dart';
  8. part 'common_data_state.dart';
  9. class CommonDataBloc extends Bloc<CommonDataEvent, CommonDataState> {
  10. final Repository repository;
  11. CommonDataBloc({@required this.repository}) : super(CommonDataInitial());
  12. @override
  13. Stream<CommonDataState> mapEventToState(
  14. CommonDataEvent event,
  15. ) async* {
  16. if (event is DataFetched) {
  17. try {
  18. final response = await repository.getCommonData(
  19. tableSupply: event.tbSupply, condition: event.condition);
  20. List<CommonData> commonDatas = response.map((data) {
  21. if (data.id == event.selectedId) {
  22. data.isSelected = true;
  23. }
  24. return data;
  25. }).toList();
  26. yield CommonDataSuccess(items: commonDatas);
  27. } catch (_) {
  28. yield CommonDataFailure();
  29. }
  30. } else if (event is OnRefresh) {
  31. try {
  32. final response = await repository.getCommonData(
  33. tableSupply: event.tbSupply, condition: event.condition);
  34. List<CommonData> commonDatas = response.map((data) {
  35. if (data.id == event.selectedId) {
  36. data.isSelected = true;
  37. }
  38. return data;
  39. }).toList();
  40. yield CommonDataSuccess(items: commonDatas);
  41. } catch (_) {
  42. yield CommonDataFailure();
  43. }
  44. }
  45. }
  46. }