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.

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