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.

74 lines
2.5KB

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