decodeButtonStyle static method
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:
- decodeBorderSide
- decodeColor
- decodeEdgeInsetsGeometry
- decodeInteractiveInkFeatureFactory
- decodeWidgetStatePropertyBorderSide
- decodeWidgetStatePropertyColor
- decodeWidgetStatePropertyDouble
- decodeWidgetStatePropertyEdgeInsetsGeometry
- decodeWidgetStatePropertyMouseCursor
- decodeWidgetStatePropertyOutlinedBorder
- decodeWidgetStatePropertySize
- decodeWidgetStatePropertyTextStyle
- decodeMaterialTapTargetSize
- decodeMouseCursor
- decodeOutlinedBorder
- decodeSize
- decodeTextStyle
- decodeVisualDensity
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;
}