import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../../data/api/app_exception.dart'; import '../../../../data/repository/repository.dart'; import '../../../../utils/utils.dart'; import '../../../custom_widgets/widget_utils.dart'; import '../models/task.dart'; import '../models/task_update_request.dart'; part 'task_detail_state.dart'; class TaskDetailCubit extends Cubit { final repository = Repository(); TaskDetailCubit() : super(TaskDetailInitial()); final detailCtl = TextEditingController(); var isCompleted = ValueNotifier(true); void dispose() { detailCtl.dispose(); } Future preparedData(int taskId) async { try { await Future.delayed(const Duration(seconds: 0)); emit(TaskDetailLoading()); var task = await repository.getTaskDetail(id: taskId); detailCtl.text = task.completedDetail ?? ''; isCompleted.value = task.isCompleted ?? false; isCompleted.notifyListeners(); emit(TaskDetailSuccessful(task)); } catch (e) { emit(TaskDetailFailure(AppException.handleError(e))); } } Future updateStatusTask( RequestTaskUpdate task, ) async { print(task.toJson()); UtilWidget.showLoading(); await repository.updateTask( (success) { UtilWidget.hideDialog(); Get.back(result: 'ok'); // Utils.showSnackBarSuccess(); }, (errorMessage) { UtilWidget.hideDialog(); Utils.showSnackBarError(); }, item: task, ); } }