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.

58 lines
1.6KB

  1. import 'package:bloc/bloc.dart';
  2. import 'package:equatable/equatable.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:get/get.dart';
  5. import '../../../../data/api/app_exception.dart';
  6. import '../../../../data/repository/repository.dart';
  7. import '../../../../utils/utils.dart';
  8. import '../../../custom_widgets/widget_utils.dart';
  9. import '../models/task.dart';
  10. import '../models/task_update_request.dart';
  11. part 'task_detail_state.dart';
  12. class TaskDetailCubit extends Cubit<TaskDetailState> {
  13. final repository = Repository();
  14. TaskDetailCubit() : super(TaskDetailInitial());
  15. final detailCtl = TextEditingController();
  16. var isCompleted = ValueNotifier(true);
  17. void dispose() {
  18. detailCtl.dispose();
  19. }
  20. Future<void> preparedData(int taskId) async {
  21. try {
  22. await Future.delayed(const Duration(seconds: 0));
  23. emit(TaskDetailLoading());
  24. var task = await repository.getTaskDetail(id: taskId);
  25. detailCtl.text = task.completedDetail ?? '';
  26. isCompleted.value = task.isCompleted ?? false;
  27. isCompleted.notifyListeners();
  28. emit(TaskDetailSuccessful(task));
  29. } catch (e) {
  30. emit(TaskDetailFailure(AppException.handleError(e)));
  31. }
  32. }
  33. Future<void> updateStatusTask(
  34. RequestTaskUpdate task,
  35. ) async {
  36. print(task.toJson());
  37. UtilWidget.showLoading();
  38. await repository.updateTask(
  39. (success) {
  40. UtilWidget.hideDialog();
  41. Get.back(result: 'ok');
  42. // Utils.showSnackBarSuccess();
  43. },
  44. (errorMessage) {
  45. UtilWidget.hideDialog();
  46. Utils.showSnackBarError();
  47. },
  48. item: task,
  49. );
  50. }
  51. }