decodeOutlinedBorder static method

OutlinedBorder? decodeOutlinedBorder(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes a given Map-like value into a OutlinedBorder. The value returned depends on the "type" parameter. The "type" must be one of:

  • beveled
  • circle
  • rectangle
  • rounded
  • stadium

The JSON format of the value depends on the "type" and the associated class.

BeveledRectangleBorder

{
  "borderRadius": <BorderRadius>,
  "side": <BorderSide>,
  "type": "beveled"
}

CircleBorder

{
  "side": <BorderSide>,
  "type": "circle"
}

ContinuousRectangleBorder

{
  "borderRadius": <BorderRadius>,
  "side": <BorderSide>,
  "type": "rectangle"
}

RoundedRectangleBorder

{
  "borderRadius": <BorderRadius>,
  "side": <BorderSide>,
  "type": "rounded"
}

StadiumBorder

{
  "side": <BorderSide>,
  "type": "stadium"
}

See also:
 * [decodeBorderRadius]
 * [decodeBorderSide]

Implementation

static OutlinedBorder? decodeOutlinedBorder(
  dynamic value, {
  bool validate = true,
}) {
  OutlinedBorder? result;
  if (value is OutlinedBorder) {
    result = value;
  } else {
    assert(value == null || value['type'] is String);
    _checkSupported(
      'OutlinedBorder.type',
      [
        'beveled',
        'circle',
        'rectangle',
        'rounded',
        'stadium',
      ],
      value == null ? null : value['type'],
    );

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

      switch (type) {
        case 'beveled':
          result = BeveledRectangleBorder(
            borderRadius: decodeBorderRadius(
                  value['borderRadius'],
                  validate: false,
                ) ??
                BorderRadius.zero,
            side: decodeBorderSide(
                  value['side'],
                  validate: false,
                ) ??
                BorderSide.none,
          );
          break;

        case 'circle':
          result = CircleBorder(
            side: decodeBorderSide(
                  value['side'],
                  validate: false,
                ) ??
                BorderSide.none,
          );
          break;

        case 'rectangle':
          result = ContinuousRectangleBorder(
            borderRadius: decodeBorderRadius(
                  value['borderRadius'],
                  validate: false,
                ) ??
                BorderRadius.zero,
            side: decodeBorderSide(
                  value['side'],
                  validate: false,
                ) ??
                BorderSide.none,
          );
          break;

        case 'rounded':
          result = RoundedRectangleBorder(
            borderRadius: decodeBorderRadius(
                  value['borderRadius'],
                  validate: false,
                ) ??
                BorderRadius.zero,
            side: decodeBorderSide(
                  value['side'],
                  validate: false,
                ) ??
                BorderSide.none,
          );
          break;

        case 'stadium':
          result = StadiumBorder(
            side: decodeBorderSide(
                  value['side'],
                  validate: false,
                ) ??
                BorderSide.none,
          );
          break;
      }
    }
  }

  return result;
}