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<String> 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<LanguageModel>(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
                ? newLabelStyle(color: Colors.black54, fontSize: 20)
                : newLabelStyleMM(color: Colors.black54, fontSize: 20),
            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),
    );
  }
}
