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 InputTime 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;

  const InputTime(
      {Key key,
      this.labelTextKey,
      this.iconData,
      this.controller,
      this.validator,
      this.maxLines = 1,
      this.withBorder = false,
      this.borderColor,
      this.autoFocus = false,
      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 {
            FocusScope.of(context).unfocus();
            var initialDate = TimeOfDay.now();
            if (controller != null) {
              try {
                final format = DateFormat.jm(); //"6:00 AM"
                initialDate =
                    TimeOfDay.fromDateTime(format.parse(controller.text));
                // var values = controller.text.split(":");
                // initialDate = TimeOfDay(
                //     hour: int.parse(values[0]), minute: int.parse(values[1]));
              } catch (e) {} // ignore error
            }

            TimeOfDay t = await showTimePicker(
              initialTime: initialDate,
              context: context,
            );
            if (t != null && controller != null) {
              final format = DateFormat.jm(); //"6:00 AM"
              final now = new DateTime.now();
              final dt =
                  DateTime(now.year, now.month, now.day, t.hour, t.minute);
              controller.text = "${format.format(dt)}";
            }
          },
          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),
    );
  }
}
