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.

70 lines
2.4KB

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