buildTextField method

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

Implementation

TextField buildTextField(
  Set<WidgetState> states, {
  String? label,
  String? placeholder,
  bool autoFocus = false,
  bool readOnly = false,
  int maxLines = 1,
  FocusNode? focusNode,
  TextInputType? keyboardType,
  TextInputAction? textInputAction,
  List<TextInputFormatter>? inputFormatters,
  TextEditingController? controller,
  ValueChanged<String>? onValueChanged,
}) {
  final isDisabled = states.contains(WidgetState.disabled);
  final isMultiline = maxLines > 1;

  final inputDecoration = InputDecoration(
    border: InputBorder.none,
    hintText: placeholder ?? label,
    hintStyle: hintStyle.resolve(states),
    isCollapsed: true,
    contentPadding: const EdgeInsets.symmetric(vertical: 5),
  );

  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: textStyle.resolve(states),
    decoration: inputDecoration,
    maxLines: maxLines,
    scrollPhysics: const BouncingScrollPhysics(),
    scrollPadding: const EdgeInsets.all(8),
    obscureText: obscureText,
    inputFormatters: inputFormatters ?? this.inputFormatters,
    keyboardType: _resolveKeyboardType(isDisabled, readOnly, isMultiline, keyboardType),
    textInputAction: _resolveTextInputAction(isMultiline, textInputAction),
    textAlignVertical: isMultiline ? TextAlignVertical.top : TextAlignVertical.center,
    onChanged: onValueChanged,
  );
}