import 'package:farm_tpf/utils/validators.dart'; import 'package:flutter/material.dart'; import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; import 'package:get/get.dart'; import 'package:get/get_state_manager/get_state_manager.dart'; import 'package:farm_tpf/utils/formatter.dart'; import 'widget_field_time_picker.dart'; class FieldDateWidget extends StatefulWidget { final String hint; final String value; final Function(DateTime) onPressed; final String invalidMessage; final String tag; FieldDateWidget( {@required this.hint, @required this.tag, this.value, @required this.onPressed, this.invalidMessage}); @override _FieldDateWidgetState createState() => _FieldDateWidgetState(); } class _FieldDateWidgetState extends State { ChangeDateTimePicker controller; @override void initState() { super.initState(); controller = Get.put(ChangeDateTimePicker(), tag: widget.tag); } @override Widget build(BuildContext context) { return GetBuilder( tag: widget.tag, builder: (data) { return SizedBox( width: double.infinity, height: Validators.stringNotNullOrEmpty(widget.invalidMessage) ? 85 : 65, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( widget.hint ?? '', style: TextStyle( color: Validators.stringNotNullOrEmpty(widget.invalidMessage) ? Colors.red : Colors.black54, fontSize: 13.0), ), SizedBox( width: double.infinity, height: 44, child: 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) { controller.change(date); widget.onPressed(date); }, currentTime: data?.selectedDateTime, locale: LocaleType.vi); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( padding: EdgeInsets.only( top: 0.0, right: 0.0, bottom: 10.5, left: 0.0), decoration: BoxDecoration( border: Border( bottom: BorderSide( width: 0.5, color: Validators.stringNotNullOrEmpty( widget.invalidMessage) ? Colors.red : Colors.black54)), ), child: Row( children: [ Expanded( child: Text( data?.selectedDateTime ?.displayDateTime_DDMMYYYY_HHmm() ?? widget.hint, style: TextStyle( fontSize: 14.0, color: Colors.black))), Icon( Icons.date_range, color: Colors.grey, ), ], )) ], )), ), Validators.stringNotNullOrEmpty(widget.invalidMessage) ? Text( widget.invalidMessage ?? '', style: TextStyle( fontSize: 12.0, color: Colors.red, fontWeight: FontWeight.normal), textAlign: TextAlign.left, ) : SizedBox(), ], ), ); }); } }