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.

45 lines
1.4KB

  1. import 'dart:async';
  2. import 'dart:convert' as convert;
  3. import 'dart:convert';
  4. import 'package:bloc/bloc.dart';
  5. import 'package:dio/dio.dart';
  6. import 'package:equatable/equatable.dart';
  7. import 'package:farm_tpf/custom_model/Nursery.dart';
  8. import 'package:farm_tpf/data/api/app_exception.dart';
  9. import 'package:farm_tpf/data/api/dio_provider.dart';
  10. import 'package:farm_tpf/data/repository/repository.dart';
  11. import 'package:farm_tpf/utils/const_common.dart';
  12. import 'package:meta/meta.dart';
  13. part 'action_detail_event.dart';
  14. part 'action_detail_state.dart';
  15. class ActionDetailBloc extends Bloc<ActionDetailEvent, ActionDetailState> {
  16. final Repository repository;
  17. ActionDetailBloc({@required this.repository}) : super(ActionDetailInitial());
  18. final dio = DioProvider.instance();
  19. @override
  20. Stream<ActionDetailState> mapEventToState(
  21. ActionDetailEvent event,
  22. ) async* {
  23. if (event is FetchData) {
  24. if (!event.isNeedFetchData) {
  25. yield ActionDetailInitial();
  26. } else {
  27. try {
  28. yield ActionDetailLoading();
  29. Response<String> response = await dio.get(
  30. "${ConstCommon.baseUrl}/${event.apiActivity}/${event.activityId}");
  31. final jsonData = json.decode(response.data);
  32. yield ActionDetailSuccess(item: jsonData);
  33. } catch (error) {
  34. yield ActionDetailFailure(
  35. errorString: AppException.handleError(error));
  36. }
  37. }
  38. }
  39. }
  40. }