textFormField method

Widget textFormField()

Implementation

Widget textFormField() {
  return Material(
    borderRadius: BorderRadius.circular(
      getBorderRadius(),
    ),
    color: widget.disabled
        ? AppTheme.themeColors.inverse.withValues(alpha: 0.6)
        : widget.fillColor ?? AppTheme.themeColors.base,
    child: TextFormField(
      textInputAction: widget.textInputAction ?? TextInputAction.done,
      textCapitalization: widget.textCapitalization,
      keyboardAppearance: MediaQuery.of(context).platformBrightness,
      showCursor: widget.readOnly ? false : widget.showCursor ?? true,
      onChanged: (value) {
        if (widget.debounceTime != null &&
            (widget.type == UFUInputBoxType.searchbar ||
                widget.type == UFUInputBoxType.searchbarWithoutBorder)) {
          debounce(() => getOnChanged(value));
        } else {
          if (widget.debounceTime != null) {
            debounce(() => getOnChanged(value));
          } else {
            getOnChanged(value);
          }
        }
      },
      controller: showChips ? null : inputBoxController.controller,
      onTap: widget.onPressed,
      validator: validateField,
      textAlign: widget.textAlign ?? TextAlign.start,
      textAlignVertical: widget.textAlignVertical ?? TextAlignVertical.top,
      onSaved: widget.onSaved,
      keyboardType:
          widget.autoGrow ? TextInputType.multiline : widget.keyboardType,
      readOnly: widget.readOnly,
      obscureText: widget.obscureText,
      minLines: widget.autoGrow ? 1 : null,
      maxLines: widget.maxLines,
      cursorColor: (widget.type == UFUInputBoxType.searchbar ||
              widget.type == UFUInputBoxType.composeEmail)
          ? AppTheme.themeColors.text
          : AppTheme.themeColors.primary,
      maxLength: widget.maxLength,
      enabled: !widget.disabled,
      cursorHeight: widget.cursorHeight,
      scrollController: widget.scrollController,
      scrollPadding: widget.scrollPadding,
      scrollPhysics: widget.scrollPhysics,
      enableSuggestions: widget.enableSuggestions,
      cursorWidth: widget.cursorWidth,
      focusNode: inputBoxController.focusNode,
      autofocus: widget.autofocus,
      style: getStyle().copyWith(
        color: widget.textColor ??
            AppTheme.themeColors.text
                .withValues(alpha: widget.disabled ? 0.4 : 1),
        fontSize: TextHelper.getTextSize(widget.textSize),
      ),
      decoration: InputDecoration(
        counterStyle: const TextStyle(
          height: 0,
        ),
        counterText:
            (!widget.isCounterText && widget.maxLength != null) ? '' : null,
        border: UnderlineInputBorder(
          borderRadius: BorderRadius.circular(
            getBorderRadius(),
          ),
          borderSide:
              BorderSide(color: AppTheme.themeColors.inverse, width: 1.5),
        ),
        filled: widget.disabled || widget.fillColor != null,
        fillColor: widget.disabled
            ? UFUColor.lightGray
            : widget.fillColor ?? AppTheme.themeColors.base,
        floatingLabelBehavior: FloatingLabelBehavior.always,
        enabledBorder: getInActiveBorder(),
        disabledBorder: getInActiveBorder(),
        focusedBorder: getActiveBorder(),
        focusedErrorBorder: getInActiveBorder(),
        errorBorder: getInActiveBorder(),
        contentPadding: getContentPadding(),
        isCollapsed: true,
        isDense: widget.type == UFUInputBoxType.inline,
        hintText: widget.hintText,
        floatingLabelAlignment: FloatingLabelAlignment.start,
        hintStyle: getStyle().copyWith(
            color: widget.hintFontColor ?? AppTheme.themeColors.hintText,
            fontSize: typeToHintFontSize(),
            fontWeight: widget.hintFontWeight ?? FontWeight.normal,
            letterSpacing: 0),
        errorStyle: const TextStyle(
          fontSize: 0.01,
        ),
        prefixIconConstraints: widget.prefixIconConstraints ??
            (showChips || widget.avoidPrefixConstraints
                ? null
                : const BoxConstraints(maxWidth: 40, maxHeight: 20)),
        prefixIcon: getPrefixChild(),
        suffixIcon: getSuffixChild(),
        suffixIconConstraints: const BoxConstraints(maxHeight: 40),
      ),
      inputFormatters: widget.inputFormatters,
      onFieldSubmitted: widget.onFieldSubmitted,
      onTapOutside: widget.onTapOutside,
      onTapUpOutside: widget.onTapUpOutside,
    ),
  );
}