decodeInputBorder static method

InputBorder? decodeInputBorder(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to an InputBorder. This expects a specific "type" attribute to be one of:

  • outline
  • underline

The expected structure depends on the exact "type" value passed in.

Type: outline

{
  borderRadius: <BorderRadius>,
  borderSide: <BorderSide>,
  gapPadding: <double>
}

Type: underline

{
  borderRadius: <BorderRadius>,
  borderSide: <BorderSide>
}

See also:

Implementation

static InputBorder? decodeInputBorder(
  dynamic value, {
  bool validate = true,
}) {
  InputBorder? result;
  if (value is InputBorder) {
    result = value;
  } else {
    assert(value == null || value['type'] is String);
    _checkSupported(
      'InputBorder.type',
      [
        'outline',
        'underline',
      ],
      value == null ? null : value['type'],
    );

    if (value != null) {
      assert(SchemaValidator.validate(
        schemaId: '$_baseSchemaUrl/input_border',
        value: value,
        validate: validate,
      ));
      String? type = value['type'];

      switch (type) {
        case 'outline':
          result = OutlineInputBorder(
            borderRadius: decodeBorderRadius(
                  value['borderRadius'],
                  validate: false,
                ) ??
                BorderRadius.all(Radius.circular(4.0)),
            borderSide: decodeBorderSide(
                  value['borderSide'],
                  validate: false,
                ) ??
                BorderSide(),
            gapPadding: JsonClass.parseDouble(value['gapPadding'], 4.0)!,
          );
          break;

        case 'underline':
          result = UnderlineInputBorder(
              borderRadius: decodeBorderRadius(
                    value['borderRadius'],
                    validate: false,
                  ) ??
                  BorderRadius.only(
                    topLeft: Radius.circular(4.0),
                    topRight: Radius.circular(4.0),
                  ),
              borderSide: decodeBorderSide(
                    value['borderSide'],
                    validate: false,
                  ) ??
                  const BorderSide());
          break;
      }
    }
  }

  return result;
}