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.

81 lines
2.7KB

  1. import 'package:farm_tpf/utils/const_style.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_datetime_picker_plus/flutter_datetime_picker_plus.dart' as datatTimePicker;
  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>(
  28. init: changeDate,
  29. builder: (value) {
  30. return TextButton(
  31. onPressed: () {
  32. datatTimePicker.DatePicker.showDateTimePicker(
  33. context,
  34. showTitleActions: true,
  35. onChanged: (date) {},
  36. onConfirm: (date) {
  37. changeDate.change(date);
  38. widget.onUpdateDateTime(date);
  39. },
  40. currentTime: value.selectedDateTime,
  41. locale: datatTimePicker.LocaleType.vi,
  42. );
  43. },
  44. child: Container(
  45. padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 10.5, left: 0.0),
  46. decoration: BoxDecoration(
  47. border: kBorderTextField,
  48. ),
  49. child: Row(
  50. children: [
  51. Expanded(
  52. child: Text(
  53. value.selectedDateTime?.displayDateTime_DDMMYYYY_HHmm() ?? '',
  54. style: TextStyle(fontSize: 14.0, color: Colors.black87),
  55. )),
  56. Icon(
  57. Icons.date_range,
  58. color: Colors.grey,
  59. ),
  60. ],
  61. )));
  62. });
  63. }
  64. }
  65. class ChangeDateTimePicker extends GetxController {
  66. DateTime? selectedDateTime;
  67. initValue({DateTime? selectedDate}) {
  68. selectedDateTime = selectedDate ?? DateTime.now();
  69. update();
  70. }
  71. change(DateTime dateTime) {
  72. selectedDateTime = dateTime;
  73. update();
  74. }
  75. }