decodeWidgetStatePropertyIconThemeData static method
WidgetStateProperty<IconThemeData?> ?
decodeWidgetStatePropertyIconThemeData(
- dynamic value, {
- bool validate = true,
Decodes a value
into a IconThemeData based WidgetStateProperty.
This accepts a IconThemeData or a String which will be resolved for
all states.
Alternatively, if the value
is a Map then this expects the following
format:
{
"disabled": "<IconThemeData>",
"dragged": "<IconThemeData>",
"empty": "<IconThemeData>",
"error": "<IconThemeData>",
"focused": "<IconThemeData>",
"hovered": "<IconThemeData>",
"pressed": "<IconThemeData>",
"scrolledUnder": "<IconThemeData>",
"selected": "<IconThemeData>"
}
See also:
Implementation
static WidgetStateProperty<IconThemeData?>?
decodeWidgetStatePropertyIconThemeData(
dynamic value, {
bool validate = true,
}) {
WidgetStateProperty<IconThemeData?>? result;
if (value is WidgetStateProperty<IconThemeData?>) {
result = value;
} else if (value != null) {
if (value is IconThemeData) {
result = WidgetStateProperty.all<IconThemeData?>(value);
} else if (value is String) {
result = WidgetStateProperty.all<IconThemeData?>(
decodeIconThemeData(
value,
validate: false,
),
);
} else if (value is Map) {
final testValues = [
'disabled',
'dragged',
'empty',
'error',
'focused',
'hovered',
'pressed',
'scrolledUnder',
'selected',
];
var isMsp = false;
for (var key in value.keys) {
if (testValues.contains(key)) {
isMsp = true;
break;
}
}
if (isMsp != true) {
result = WidgetStateProperty.all<IconThemeData?>(
decodeIconThemeData(
value,
validate: false,
),
);
} else {
assert(SchemaValidator.validate(
schemaId: '$_baseSchemaUrl/widget_state_property_icon_theme_data',
value: value,
validate: validate,
));
result = MapWidgetStateProperty.resolveWith((states) {
IconThemeData? result;
if (states.contains(WidgetState.disabled)) {
result = decodeIconThemeData(
value['disabled'],
validate: false,
);
} else if (states.contains(WidgetState.dragged)) {
result = decodeIconThemeData(
value['dragged'],
validate: false,
);
} else if (states.contains(WidgetState.error)) {
result = decodeIconThemeData(
value['error'],
validate: false,
);
} else if (states.contains(WidgetState.focused)) {
result = decodeIconThemeData(
value['focused'],
validate: false,
);
} else if (states.contains(WidgetState.hovered)) {
result = decodeIconThemeData(
value['hovered'],
validate: false,
);
} else if (states.contains(WidgetState.pressed)) {
result = decodeIconThemeData(
value['pressed'],
validate: false,
);
} else if (states.contains(WidgetState.scrolledUnder)) {
result = decodeIconThemeData(
value['scrolledUnder'],
validate: false,
);
} else if (states.contains(WidgetState.selected)) {
result = decodeIconThemeData(
value['selected'],
validate: false,
);
} else {
result = decodeIconThemeData(
value['empty'],
validate: false,
);
}
return result;
});
}
} else {
result = WidgetStateProperty.all<IconThemeData?>(value);
}
}
return result;
}