import 'package:farm_tpf/utils/const_style.dart'; import 'package:flutter/material.dart'; import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; import 'package:farm_tpf/utils/formatter.dart'; import 'package:get/get.dart'; import 'package:get/state_manager.dart'; class WidgetFieldDateTimePicker extends StatefulWidget { final DateTime initDateTime; final Function(DateTime selectedDateTimeLocal) onUpdateDateTime; WidgetFieldDateTimePicker( {@required this.initDateTime, @required this.onUpdateDateTime}); @override _WidgetFieldDateTimePickerState createState() => _WidgetFieldDateTimePickerState(); } class _WidgetFieldDateTimePickerState extends State { var changeDate = Get.put(ChangeDateTimePicker()); @override void initState() { super.initState(); changeDate.initValue(selectedDate: widget.initDateTime); widget.onUpdateDateTime(changeDate.selectedDateTime); } @override Widget build(BuildContext context) { return GetBuilder(builder: (value) { return FlatButton( padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 0.0, left: 0.0), onPressed: () { DatePicker.showDateTimePicker(context, showTitleActions: true, onChanged: (date) {}, onConfirm: (date) { changeDate.change(date); widget.onUpdateDateTime(date); }, currentTime: value.selectedDateTime, locale: LocaleType.vi); }, child: Container( padding: EdgeInsets.only( top: 0.0, right: 0.0, bottom: 10.5, left: 0.0), decoration: BoxDecoration( border: kBorderTextField, ), child: Row( children: [ Expanded( child: Text( value.selectedDateTime.displayDateTime_DDMMYYYY_HHmm(), style: TextStyle(fontSize: 14.0, color: Colors.black87), )), Icon( Icons.date_range, color: Colors.blue, ), ], ))); }); } } class ChangeDateTimePicker extends GetxController { DateTime selectedDateTime; initValue({DateTime selectedDate}) { selectedDateTime = selectedDate ?? DateTime.now(); update(); } change(DateTime dateTime) { selectedDateTime = dateTime; update(); } }