textFormField method
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,
),
);
}