import 'package:farm_tpf/presentation/custom_widgets/checkbox/checkbox_widget.dart'; import 'package:farm_tpf/presentation/screens/task/models/task_update_request.dart'; import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter/src/widgets/placeholder.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../themes/styles_text.dart'; import '../../custom_widgets/app_bar_widget.dart'; import '../../custom_widgets/loading_list_page.dart'; import 'cubit/task_detail_cubit.dart'; import 'package:farm_tpf/utils/formatter.dart'; class TaskDetailPage extends StatefulWidget { final int taskId; const TaskDetailPage({super.key, required this.taskId}); @override State createState() => _TaskDetailPageState(); } class _TaskDetailPageState extends State { var bloc = TaskDetailCubit(); @override void initState() { super.initState(); bloc.preparedData(widget.taskId); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget(), body: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Expanded( child: BlocBuilder( bloc: bloc, builder: (context, state) { if (state is TaskDetailLoading) { return Center( child: LoadingListPage(), ); } else if (state is TaskDetailFailure) { return Center(child: Text(state.errorMessage)); } else if (state is TaskDetailSuccessful) { return SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _itemTaskDetail( title: '', detail: state.task.title ?? '', titleStyle: StylesText.body1, detailStyle: StylesText.body1.copyWith( color: Colors.blue, ), ), _itemTaskDetail(title: 'Hạn chót : ', detail: state.task.dueDate?.format_DDMMYY().toString() ?? ''), (state.task.isCompleted ?? false) ? _itemTaskDetail(title: 'Thời gian hoàn thành : ', detail: state.task.executeDate?.format_DDMMYY().toString() ?? '') : const SizedBox.shrink(), Padding( padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: Text( 'Mô tả công việc :', style: StylesText.body2, ), ), Padding( padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: Text( state.task.description ?? '', style: StylesText.body3, ), ), Padding( padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: CheckboxWidget( title: 'Hoàn thành', style: StylesText.body2, isChecked: state.task.isCompleted ?? false, onChange: (status) { bloc.updateStatusTask( RequestTaskUpdate( id: widget.taskId, completed: status, ), ); }, ), ), const SizedBox( height: 8, ), ], ), ); } return const SizedBox.shrink(); }, )), const SizedBox( height: 8, ), ], ), ), ); } Widget _itemTaskDetail({ required String title, required String detail, TextStyle? titleStyle, TextStyle? detailStyle, }) { return Padding( padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: titleStyle ?? StylesText.body2, ), Expanded( child: Text( '$detail', style: detailStyle ?? StylesText.body3, ), ) ], ), ); } }