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.parseDurationFromMillis(
map['duration'],
)!,
excludeBottomFocus: JsonClass.parseBool(
map['excludeBottomFocus'],
whenNull: true,
),
firstCurve: map['firstCurve'] ?? Curves.linear,
layoutBuilder:
map['layoutBuilder'] ?? AnimatedCrossFade.defaultLayoutBuilder,
reverseDuration: JsonClass.parseDurationFromMillis(
map['reverseDuration'],
),
secondCurve: map['secondCurve'] ?? Curves.linear,
sizeCurve: map['sizeCurve'] ?? Curves.linear,
);
}
return result;
}