buildTextField method

Widget buildTextField(
  1. String? nextFocusName,
  2. AFTextField<Object> field,
  3. bool isFinal
)

Implementation

Widget buildTextField(
  String? nextFocusName,
  AFTextField field,
  bool isFinal,
) {
  final FocusNode focusNode = focusNodes[field.id]!;

  final bool shouldObscureText = field.type == AFTextFieldType.PASSWORD ||
      field.type == AFTextFieldType.NEW_PASSWORD;

  FocusNode? nextFocusNode;

  if (nextFocusName != null) {
    nextFocusNode = focusNodes[nextFocusName];
  }

  return theme.textFieldWidgetBuilder(
    context,
    labelText: field.name,
    validator: (e) => field.validate(field.parser(e)),
    controller: textEditingControllers[field.id]!,
    action: isFinal ? TextInputAction.done : TextInputAction.next,
    autoFillHints: getAutoFillHintsFromFieldType(field),
    obscureText: shouldObscureText,
    focusNode: focusNode,
    forceError: forceDisplayFieldsError,
    completeAction: () async {
      if (isFinal && enableFinalAction) {
        await submitForm();
      } else if (nextFocusNode != null) {
        focusNode.unfocus();
        FocusScope.of(context).requestFocus(nextFocusNode);
      }
    },
  );
}