buildTextField method

Widget buildTextField(
  1. Set<WidgetState> states, {
  2. bool autoFocus = false,
  3. bool readOnly = false,
  4. int maxLines = 1,
  5. FocusNode? focusNode,
  6. TextInputType? keyboardType,
  7. TextInputAction? textInputAction,
  8. List<TextInputFormatter>? inputFormatters,
  9. TextEditingController? controller,
  10. ValueChanged<String>? onValueChanged,
  11. VoidCallback? onTap,
  12. required InputDecoration inputDecoration,
})

Builds a raw TextField with the theme applied.

Implementation

Widget buildTextField(
  Set<WidgetState> states, {
  bool autoFocus = false,
  bool readOnly = false,
  int maxLines = 1,
  FocusNode? focusNode,
  TextInputType? keyboardType,
  TextInputAction? textInputAction,
  List<TextInputFormatter>? inputFormatters,
  TextEditingController? controller,
  ValueChanged<String>? onValueChanged,
  VoidCallback? onTap,
  required InputDecoration inputDecoration,
}) {
  final isDisabled = states.contains(WidgetState.disabled);
  final isMultiline = maxLines > 1;
  final style = textStyle.resolve(states).copyWith(fontSize: fieldFontSize);

  return TextField(
    controller: controller,
    readOnly: readOnly,
    enableInteractiveSelection: !readOnly,
    autofocus: autoFocus,
    focusNode: focusNode,
    enabled: !isDisabled,
    textCapitalization: textCapitalization,
    autocorrect: autocorrect,
    enableSuggestions: enableSuggestions,
    maxLength: maxLength,
    maxLengthEnforcement: maxLengthEnforcement,
    cursorHeight: fieldFontSize + 2,
    style: style,
    decoration: inputDecoration,
    expands: maxLines == 1,
    minLines: maxLines > 1 ? maxLines : null,
    maxLines: null,
    scrollPhysics: const BouncingScrollPhysics(),
    scrollPadding: const EdgeInsets.all(8),
    obscureText: obscureText,
    inputFormatters: inputFormatters ?? this.inputFormatters,
    keyboardType: _resolveKeyboardType(isDisabled, readOnly, isMultiline, keyboardType),
    textInputAction: _resolveTextInputAction(isMultiline, textInputAction),
    onChanged: onValueChanged,
    onTap: onTap,
  );
}