fromDynamic static method

JsonAnimatedCrossFadeBuilder? fromDynamic(
  1. dynamic map, {
  2. JsonWidgetRegistry? registry,
})

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>,
  "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'],
      )!,
      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;
}