decodeButtonStyle static method

ButtonStyle? decodeButtonStyle(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the value to a ButtonStyle.

{
  "alignment": "<AlignmentGeometry>",
  "animationDuration": "<WidgetStateProperty<double>>",
  "backgroundColor": "<WidgetStateProperty<Color>>",
  "elevation": "<WidgetStateProperty<double>>",
  "enableFeedback": "<bool>",
  "fixedSize": "<WidgetStateProperty<double>>",
  "foregroundColor": "<WidgetStateProperty<Color>>",
  "iconColor": "<WidgetStateProperty<Color>>",
  "iconSize": "<WidgetStateProperty<double>>",
  "maximumSize": "<WidgetStateProperty<double>>",
  "minimumSize": "<WidgetStateProperty<Size>>",
  "mouseCursor": "<WidgetStateProperty<MouseCursor>>",
  "overlayColor": "<WidgetStateProperty<Color>>",
  "padding": "<WidgetStateProperty<EdgeInsetsGeometry>>",
  "shadowColor": "<WidgetStateProperty<Color>>",
  "shape": "<WidgetStateProperty<OutlinedBorder>>",
  "side": "<WidgetStateProperty<BorderSide>>",
  "splashFactory": "<InteractiveInkSplashFactory>",
  "surfaceTintColor": "<WidgetStateProperty<Color>>",
  "tapTargetSize": "<MaterialTapTargetSize>",
  "textStyle": "<WidgetStateProperty<TextStyle>>",
  "visualDensity": "<VisualDensity>"
}

This will use the properties passed through JSON to create the WidgetStateProperty of each corresponding property by using the WidgetStateProperty.all function with the value passed in.

See also:

Implementation

static ButtonStyle? decodeButtonStyle(
  dynamic value, {
  bool validate = true,
}) {
  ButtonStyle? result;

  if (value is ButtonStyle) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/button_style',
      value: value,
      validate: validate,
    ));

    result = ButtonStyle(
      alignment: decodeAlignment(
        value['alignment'],
        validate: false,
      ),
      animationDuration: JsonClass.maybeParseDurationFromMillis(
        value['animationDuration'],
      ),
      backgroundColor: decodeWidgetStatePropertyColor(
        value['backgroundColor'],
        validate: false,
      ),
      elevation: decodeWidgetStatePropertyDouble(
        value['elevation'],
        validate: false,
      ),
      enableFeedback: JsonClass.maybeParseBool(value['enableFeedback']),
      fixedSize: decodeWidgetStatePropertySize(
        value['fixedSize'],
        validate: false,
      ),
      foregroundColor: decodeWidgetStatePropertyColor(
        value['foregroundColor'],
        validate: false,
      ),
      iconColor: decodeWidgetStatePropertyColor(
        value['iconColor'],
        validate: false,
      ),
      iconSize: decodeWidgetStatePropertyDouble(
        value['iconSize'],
        validate: false,
      ),
      maximumSize: decodeWidgetStatePropertySize(
        value['maximumSize'],
        validate: false,
      ),
      minimumSize: decodeWidgetStatePropertySize(
        value['minimumSize'],
        validate: false,
      ),
      mouseCursor: decodeWidgetStatePropertyMouseCursor(
        value['mouseCursor'],
        validate: false,
      ),
      overlayColor: decodeWidgetStatePropertyColor(
        value['overlayColor'],
        validate: false,
      ),
      padding: decodeWidgetStatePropertyEdgeInsetsGeometry(
        value['padding'],
        validate: false,
      ),
      shadowColor: decodeWidgetStatePropertyColor(
        value['shadowColor'],
        validate: false,
      ),
      shape: decodeWidgetStatePropertyOutlinedBorder(
        value['shape'],
        validate: false,
      ),
      side: decodeWidgetStatePropertyBorderSide(
        value['side'],
        validate: false,
      ),
      splashFactory: decodeInteractiveInkFeatureFactory(
        value['splashFactory'],
        validate: false,
      ),
      surfaceTintColor: decodeWidgetStatePropertyColor(
        value['surfaceTintColor'],
        validate: false,
      ),
      tapTargetSize: decodeMaterialTapTargetSize(
        value['tapTargetSize'],
        validate: false,
      ),
      textStyle: decodeWidgetStatePropertyTextStyle(
        value['textStyle'],
        validate: false,
      ),
      visualDensity: decodeVisualDensity(
        value['visualDensity'],
        validate: false,
      ),
    );
  }

  return result;
}