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.

72 lines
2.3KB

  1. import 'package:farm_tpf/utils/const_style.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
  4. import 'package:farm_tpf/utils/formatter.dart';
  5. import 'package:get/get.dart';
  6. import 'package:get/state_manager.dart';
  7. class WidgetFieldDateTimePicker extends StatefulWidget {
  8. final DateTime initDateTime;
  9. final Function(DateTime selectedDateTimeLocal) onUpdateDateTime;
  10. WidgetFieldDateTimePicker({
  11. required this.initDateTime,
  12. required this.onUpdateDateTime,
  13. });
  14. @override
  15. _WidgetFieldDateTimePickerState createState() => _WidgetFieldDateTimePickerState();
  16. }
  17. class _WidgetFieldDateTimePickerState extends State<WidgetFieldDateTimePicker> {
  18. var changeDate = Get.put(ChangeDateTimePicker());
  19. @override
  20. void initState() {
  21. super.initState();
  22. changeDate.initValue(selectedDate: widget.initDateTime);
  23. widget.onUpdateDateTime(changeDate.selectedDateTime ?? DateTime.now());
  24. }
  25. @override
  26. Widget build(BuildContext context) {
  27. return GetBuilder<ChangeDateTimePicker>(builder: (value) {
  28. return TextButton(
  29. onPressed: () {
  30. DatePicker.showDateTimePicker(context, showTitleActions: true, onChanged: (date) {}, onConfirm: (date) {
  31. changeDate.change(date);
  32. widget.onUpdateDateTime(date);
  33. }, currentTime: value.selectedDateTime, locale: LocaleType.vi);
  34. },
  35. child: Container(
  36. padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 10.5, left: 0.0),
  37. decoration: BoxDecoration(
  38. border: kBorderTextField,
  39. ),
  40. child: Row(
  41. children: [
  42. Expanded(
  43. child: Text(
  44. value.selectedDateTime?.displayDateTime_DDMMYYYY_HHmm() ?? '',
  45. style: TextStyle(fontSize: 14.0, color: Colors.black87),
  46. )),
  47. Icon(
  48. Icons.date_range,
  49. color: Colors.grey,
  50. ),
  51. ],
  52. )));
  53. });
  54. }
  55. }
  56. class ChangeDateTimePicker extends GetxController {
  57. DateTime? selectedDateTime;
  58. initValue({DateTime? selectedDate}) {
  59. selectedDateTime = selectedDate ?? DateTime.now();
  60. update();
  61. }
  62. change(DateTime dateTime) {
  63. selectedDateTime = dateTime;
  64. update();
  65. }
  66. }