import 'package:fcs/helpers/theme.dart'; import 'package:fcs/localization/app_translations.dart'; import 'package:fcs/pages/main/model/language_model.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; class InputDate extends StatelessWidget { final String labelTextKey; final IconData iconData; final TextEditingController controller; final FormFieldValidator validator; final int maxLines; final bool withBorder; final Color borderColor; final TextInputType textInputType; final bool autoFocus; final String dateFormatString; const InputDate( {Key key, this.labelTextKey, this.iconData, this.controller, this.validator, this.maxLines = 1, this.withBorder = false, this.borderColor, this.autoFocus = false, this.dateFormatString = "dd MMM yyyy", this.textInputType}) : super(key: key); @override Widget build(BuildContext context) { var languageModel = Provider.of(context); return Padding( padding: const EdgeInsets.only(top: 15.0, bottom: 5), child: TextFormField( readOnly: true, onTap: () async { var dateFormatter = new DateFormat(dateFormatString); FocusScope.of(context).unfocus(); var initialDate = DateTime.now(); if (controller != null) { try { initialDate = dateFormatter.parse(controller.text); } catch (e) {} // ignore error } var d = await showDatePicker( context: context, firstDate: DateTime(0), lastDate: DateTime(2025), initialDate: initialDate, ); if (d != null && controller != null) { controller.text = dateFormatter.format(d); } }, controller: controller, autofocus: autoFocus, cursorColor: primaryColor, style: textStyle, maxLines: maxLines, keyboardType: textInputType, decoration: new InputDecoration( // hintText: '', hintStyle: TextStyle( height: 1.5, ), labelText: labelTextKey == null ? null : AppTranslations.of(context).text(labelTextKey), labelStyle: languageModel.isEng ? labelStyle : labelStyleMM, icon: iconData == null ? null : Icon( iconData, color: primaryColor, ), enabledBorder: withBorder ? OutlineInputBorder( borderSide: BorderSide(color: primaryColor, width: 1.0), ) : UnderlineInputBorder( borderSide: BorderSide(color: primaryColor, width: 1.0)), focusedBorder: withBorder ? OutlineInputBorder( borderSide: BorderSide(color: primaryColor, width: 1.0), ) : UnderlineInputBorder( borderSide: BorderSide(color: primaryColor, width: 1.0)), ), validator: validator), ); } }