import 'package:cached_network_image/cached_network_image.dart'; import 'package:farm_tpf/models/item_dropdown.dart'; import 'package:farm_tpf/presentation/screens/codes/models/stamp_type.dart'; import 'package:farm_tpf/presentation/screens/codes/widgets/item_column.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter/src/widgets/placeholder.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:get/get.dart'; import 'package:keyboard_dismisser/keyboard_dismisser.dart'; import '../../../utils/utils.dart'; import '../../custom_widgets/app_bar_widget.dart'; import '../../custom_widgets/button_widget.dart'; import '../../custom_widgets/date_picker/date_picker_widget.dart'; import '../../custom_widgets/dropdown/dropdown_bottom_sheet.dart'; import '../../custom_widgets/textfield/text_field_normal.dart'; import 'cubit/create_task_cubit.dart'; class CreateTaskPage extends StatefulWidget { final int cropId; const CreateTaskPage({ super.key, required this.cropId, }); @override State createState() => _CreateTaskPageState(); } class _CreateTaskPageState extends State { final bloc = CreateTaskCubit(); @override void initState() { super.initState(); bloc.preparedData(cropId: widget.cropId); } @override void dispose() { bloc.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget(), body: BlocListener( bloc: bloc, listener: ((context, state) { if (state is CreateTaskLoading) { SchedulerBinding.instance.addPostFrameCallback((timeTask) { UtilWidget.showLoading(); }); } else if (state is CreateTaskFailure) { SchedulerBinding.instance.addPostFrameCallback((timeTask) { UtilWidget.hideLoading(); // UtilWidget.showToastError(state.errorMessage); }); } else if (state is CreateTaskPrepareDataSuccessful) { SchedulerBinding.instance.addPostFrameCallback((timeTask) { UtilWidget.hideLoading(); }); } }), child: KeyboardDismisser( child: Container( child: Form( key: bloc.formKey, child: Column( children: [ Expanded( child: _widgetBody(), ), Padding( padding: const EdgeInsets.all(8.0), child: ButtonWidget( title: 'Cập nhật', onPressed: () { bloc.onSubmit(widget.cropId); }, ), ), ], ), ), ), ), ), ); } Widget _widgetBody() { return Container( padding: const EdgeInsets.all(16), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ItemColumnWidget( title: 'Giao việc cho', child: ValueListenableBuilder( valueListenable: bloc.selectedPEmployee, builder: (context, selected, _) { return ValueListenableBuilder>( valueListenable: bloc.employees, builder: (context, employees, _) { return DropdownBottomSheet( dataSources: employees, initValue: selected, onSelected: (val) { bloc.selectedPEmployee.value = val.key ?? ''; }, hint: 'Giao việc cho', ); }, ); }, ), ), const SizedBox( height: 8, ), ItemColumnWidget( title: 'Tiêu đề', child: TextFieldNormal( controller: bloc.titleNameCtl, maxLines: 1, hint: 'Tiêu đề', ), ), const SizedBox( height: 8, ), ItemColumnWidget( title: 'Mô tả công việc', child: TextFieldNormal( controller: bloc.detailCtl, maxLines: 3, hint: 'Mô tả công việc', ), ), const SizedBox( height: 8, ), const SizedBox(height: 8), ValueListenableBuilder( valueListenable: bloc.deadline, builder: (context, dexuat, _) { return ItemColumnWidget( title: 'Hạn chót', child: DatePickerWidget( initDateTime: dexuat, onUpdateDateTime: (selectedDate) { if (selectedDate != null) { bloc.deadline.value = selectedDate; } }, ), ); }, ), const SizedBox( height: 16, ), ], ), ), ); } }