decodeButtonThemeData static method

ButtonThemeData? decodeButtonThemeData(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the given value to an ButtonThemeData. This expects the given value to follow the structure below:

{
  "alignedDropdown": "<bool>",
  "buttonColor": "<Color>",
  "colorScheme": "<ColorScheme>",
  "disabledColor": "<Color>",
  "focusColor": "<Color>",
  "height": "<double>",
  "highlightColor": "<Color>",
  "hoverColor": "<Color>",
  "layoutBehavior": "<ButtonBarLayoutBehavior>",
  "materialTapTargetSize": "<MaterialTapTargetSize>",
  "minWidth": "<double>",
  "padding": "<EdgeInsetsGeometry>",
  "shape": "<ShapeBorder>",
  "splashColor": "<Color>",
  "textTheme": "<ButtonTextTheme>"
}

See also:

Implementation

static ButtonThemeData? decodeButtonThemeData(
  dynamic value, {
  bool validate = true,
}) {
  ButtonThemeData? result;

  if (value is ButtonThemeData) {
    result = value;
  } else if (value != null) {
    assert(SchemaValidator.validate(
      schemaId: '$_baseSchemaUrl/button_theme_data',
      value: value,
      validate: validate,
    ));
    result = ButtonThemeData(
      alignedDropdown: JsonClass.parseBool(value['alignedDropdown']),
      buttonColor: decodeColor(
        value['buttonColor'],
        validate: false,
      ),
      colorScheme: decodeColorScheme(
        value['colorScheme'],
        validate: false,
      ),
      disabledColor: decodeColor(
        value['disabledColor'],
        validate: false,
      ),
      focusColor: decodeColor(
        value['focusColor'],
        validate: false,
      ),
      height: JsonClass.maybeParseDouble(value['height'], 36.0)!,
      highlightColor: decodeColor(
        value['highlightColor'],
        validate: false,
      ),
      hoverColor: decodeColor(
        value['hoverColor'],
        validate: false,
      ),
      layoutBehavior: decodeButtonBarLayoutBehavior(
            value['layoutBehavior'],
            validate: false,
          ) ??
          ButtonBarLayoutBehavior.padded,
      materialTapTargetSize: decodeMaterialTapTargetSize(
        value['materialTapTargetSize'],
        validate: false,
      ),
      minWidth: JsonClass.maybeParseDouble(value['minWidth'], 88.0)!,
      padding: decodeEdgeInsetsGeometry(
        value['padding'],
        validate: false,
      ),
      shape: decodeShapeBorder(
        value['shape'],
        validate: false,
      ),
      splashColor: decodeColor(
        value['splashColor'],
        validate: false,
      ),
      textTheme: decodeButtonTextTheme(
        value['textTheme'],
        validate: false,
      )!,
    );
  }

  return result;
}