getValidations function

String getValidations(
  1. FormalParameterElement param, {
  2. ClassElement2? enclosingClass,
})

Implementation

String getValidations(
  FormalParameterElement param, {
  ClassElement2? enclosingClass,
}) {
  final buffer = StringBuffer();
  bool hasForwardRef = false;

  final isNullable = param.type.nullabilitySuffix == NullabilitySuffix.question;

  if (param.type is DynamicType) {
    buffer.write('l.any()');
  }

  if (param.type.isDartCoreBool) {
    buffer.write('l.boolean()');
  }

  if (param.type.isDartCoreDouble) {
    buffer.write('l.double()');
    buffer.write(getDoubleValidations(param));
  }

  if (param.type.isDartCoreInt) {
    buffer.write('l.int()');
    buffer.write(getIntValidations(param));
  }

  if (param.type.isDartCoreList) {
    _writeListValidations(buffer, param, enclosingClass: enclosingClass);
  }

  if (param.type.isDartCoreMap) {
    _writeMapValidations(buffer, param, enclosingClass: enclosingClass);
  }

  if (param.type.isDartCoreNull) {
    buffer.write('l.nullValue()');
  }

  if (param.type.isDartCoreNum) {
    buffer.write('l.number()');
    buffer.write(getNumberValidations(param));
  }

  if (param.type.isDartCoreString ||
      param.type.getDisplayString().replaceFirst('?', '') == 'DateTime') {
    buffer.write('l.string()');
    buffer.write(getStringValidations(param));
  }

  if (buffer.isEmpty) {
    hasForwardRef = _checkAndAddCustomSchema(
      buffer,
      param,
      enclosingClass: enclosingClass,
    );
  }

  getCustomValidations(param, buffer);

  final hasDefaultAnnotation = getAnnotation(defaultChecker, param) != null;
  if (param.type is! DynamicType && !isNullable && !hasDefaultAnnotation) {
    buffer.write('.required()');
  }

  // Close forwardRef if it was opened
  if (hasForwardRef) {
    buffer.write(')');
  }

  return buffer.toString();
}