fromDynamic static method
Builds the builder from a Map-like dynamic structure. This expects the JSON format to be of the following structure:
{
"alignment": "<AlignmentGeometry>",
"crossFadeState": "<CrossFadeState>",
"duration": "<int; millis>",
"excludeBottomFocus": "<bool>",
"firstCurve": "<Curve>",
"layoutBuilder": "<AnimatedCrossFadeBuilder>",
"reverseDuration": "<int; millis>",
"secondCurve": "<Curve>",
"sizeCurve": "<Curve>"
}
As a note, the Curve and AnimatedCrossFadeBuilder cannot be decoded via JSON. Instead, the only way to bind those values to the builder is to use a function or a variable reference via the JsonWidgetRegistry.
Implementation
static JsonAnimatedCrossFadeBuilder? fromDynamic(
dynamic map, {
JsonWidgetRegistry? registry,
}) {
JsonAnimatedCrossFadeBuilder? result;
if (map != null) {
result = JsonAnimatedCrossFadeBuilder(
alignment: ThemeDecoder.decodeAlignment(
map['alignment'],
validate: false,
) ??
Alignment.topCenter,
crossFadeState: ThemeDecoder.decodeCrossFadeState(
map['crossFadeState'],
validate: false,
)!,
duration: JsonClass.maybeParseDurationFromMillis(
map['duration'],
)!,
excludeBottomFocus: JsonClass.parseBool(
map['excludeBottomFocus'],
whenNull: true,
),
firstCurve: map['firstCurve'] ?? Curves.linear,
layoutBuilder:
map['layoutBuilder'] ?? AnimatedCrossFade.defaultLayoutBuilder,
reverseDuration: JsonClass.maybeParseDurationFromMillis(
map['reverseDuration'],
),
secondCurve: map['secondCurve'] ?? Curves.linear,
sizeCurve: map['sizeCurve'] ?? Curves.linear,
);
}
return result;
}