maybeFromDynamic static method

JsonInteractiveViewerBuilderModel? maybeFromDynamic(
  1. dynamic map, {
  2. Map<String, dynamic> args = const {},
  3. JsonWidgetRegistry? registry,
})

Implementation

static JsonInteractiveViewerBuilderModel? maybeFromDynamic(
  dynamic map, {
  Map<String, dynamic> args = const {},
  JsonWidgetRegistry? registry,
}) {
  JsonInteractiveViewerBuilderModel? result;

  if (map != null) {
    if (map is String) {
      map = yaon.parse(
        map,
        normalize: true,
      );
    }

    if (map is JsonInteractiveViewerBuilderModel) {
      result = map;
    } else {
      registry ??= JsonWidgetRegistry.instance;
      map = registry.processArgs(map, <String>{}).value;
      result = JsonInteractiveViewerBuilderModel(
        args,
        alignment: () {
          dynamic parsed = ThemeDecoder.decodeAlignment(
            map['alignment'],
            validate: false,
          );

          return parsed;
        }(),
        boundaryMargin: () {
          dynamic parsed = ThemeDecoder.decodeEdgeInsets(
            map['boundaryMargin'],
            validate: false,
          );
          parsed ??= EdgeInsets.zero;

          return parsed;
        }(),
        clipBehavior: () {
          dynamic parsed = ThemeDecoder.decodeClip(
            map['clipBehavior'],
            validate: false,
          );
          parsed ??= Clip.hardEdge;

          return parsed;
        }(),
        constrained: JsonClass.parseBool(
          map['constrained'],
          whenNull: true,
        ),
        interactionEndFrictionCoefficient:
            map['interactionEndFrictionCoefficient'] ?? 0.0000135,
        maxScale: () {
          dynamic parsed = JsonClass.maybeParseDouble(map['maxScale']);

          parsed ??= 2.5;

          return parsed;
        }(),
        minScale: () {
          dynamic parsed = JsonClass.maybeParseDouble(map['minScale']);

          parsed ??= 0.8;

          return parsed;
        }(),
        onInteractionEnd: map['onInteractionEnd'],
        onInteractionStart: map['onInteractionStart'],
        onInteractionUpdate: map['onInteractionUpdate'],
        panAxis: () {
          dynamic parsed = ThemeDecoder.decodePanAxis(
            map['panAxis'],
            validate: false,
          );
          parsed ??= PanAxis.free;

          return parsed;
        }(),
        panEnabled: JsonClass.parseBool(
          map['panEnabled'],
          whenNull: true,
        ),
        scaleEnabled: JsonClass.parseBool(
          map['scaleEnabled'],
          whenNull: true,
        ),
        scaleFactor: () {
          dynamic parsed = JsonClass.maybeParseDouble(map['scaleFactor']);

          parsed ??= kDefaultMouseScrollToScaleFactor;

          return parsed;
        }(),
        trackpadScrollCausesScale: JsonClass.parseBool(
          map['trackpadScrollCausesScale'],
          whenNull: false,
        ),
        transformationController: map['transformationController'],
        child: () {
          dynamic parsed = JsonWidgetData.fromDynamic(
            map['child'],
            registry: registry,
          );

          if (parsed == null) {
            throw Exception(
                'Null value encountered for required parameter: [child].');
          }
          return parsed;
        }(),
      );
    }
  }

  return result;
}