import 'package:farm_tpf/presentation/custom_widgets/app_bar_widget.dart'; import 'package:farm_tpf/presentation/custom_widgets/button_widget.dart'; import 'package:farm_tpf/presentation/screens/codes/cubit/code_update_timeline_cubit.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:keyboard_dismisser/keyboard_dismisser.dart'; import '../../../utils/utils.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 'widgets/item_column.dart'; class CodeUpdateTimelinePage extends StatefulWidget { const CodeUpdateTimelinePage({super.key}); @override State createState() => _CodeUpdateTimelinePageState(); } class _CodeUpdateTimelinePageState extends State { final bloc = CodeUpdateTimelineCubit(); @override void initState() { super.initState(); bloc.preparedData(); } @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 CodeUpdateTimelineLoading) { SchedulerBinding.instance.addPostFrameCallback((timeStamp) { UtilWidget.showLoading(); }); } else if (state is CodeUpdateTimelineFailure) { SchedulerBinding.instance.addPostFrameCallback((timeStamp) { UtilWidget.hideLoading(); // UtilWidget.showToastError(state.errorMessage); }); } else if (state is CodeUpdateTimelinePrepareDataSuccessful) { SchedulerBinding.instance.addPostFrameCallback((timeStamp) { 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: () {}, ), ), ], ), ), ), ), ), ); } Widget _widgetBody() { return Container( padding: const EdgeInsets.all(16), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ValueListenableBuilder( valueListenable: bloc.actionDate, builder: (context, actionDate, _) { return ItemColumnWidget( title: 'Ngày nhập', child: DatePickerWidget( initDateTime: actionDate, onUpdateDateTime: (selectedDate) { if (selectedDate != null) { bloc.actionDate.value = selectedDate; } }, ), ); }, ), SizedBox( height: 8, ), ItemColumnWidget( title: 'Hoạt động', child: ValueListenableBuilder( valueListenable: bloc.selectedActionType, builder: (context, selected, _) { return DropdownBottomSheet( dataSources: bloc.actionTypes, initValue: selected, onSelected: (val) { bloc.selectedActionType.value = val.key ?? ''; }, hint: 'Hoạt động', ); }, ), ), const SizedBox( height: 8, ), ItemColumnWidget( title: 'Mô tả', child: TextFieldNormal( controller: bloc.descriptionCtl, maxLines: 2, hint: 'Mô tả', ), ), const SizedBox( height: 16, ), ], ), ), ); } }