decodeNumericAxisSpec static method

NumericAxisSpec? decodeNumericAxisSpec(
  1. dynamic map, {
  2. bool validate = true,
})

Decodes the object from a Map-like dynamic structure. This expects the JSON format to be of the following structure:

{
  "renderSpec": <RenderSpec<num>>,
  "scaleSpec": <ScaleSpec<num>>,
  "showAxisLine": <bool>,
  "tickFormatterSpec": <NumericTickFormatterSpec>,
  "tickProviderSpec": <NumericTickProviderSpec>,
  "viewport": <NumericExtents>
}

Implementation

static charts.NumericAxisSpec? decodeNumericAxisSpec(
  dynamic map, {
  bool validate = true,
}) {
  charts.NumericAxisSpec? result;

  if (map is charts.NumericAxisSpec) {
    result = map;
  } else if (map != null) {
    final type = map['type'];

    if (type == 'bucketing') {
      result = decodeBucketingAxisSpec(
        map,
        validate: false,
      );
    } else if (type == 'percent') {
      result = decodePercentAxisSpec<num>(
        map,
        validate: false,
      );
    } else {
      assert(SchemaValidator.validate(
        schemaId: '$_baseSchemaUrl/numeric_axis_spec',
        value: map,
        validate: validate,
      ));

      result = charts.NumericAxisSpec(
        renderSpec: decodeRenderSpec<num>(
          map['renderSpec'],
          validate: false,
        ),
        scaleSpec: map['scaleSpec'],
        showAxisLine: map['showAxisLine'] == null
            ? null
            : JsonClass.parseBool(map['showAxisLine']),
        tickFormatterSpec: decodeNumericTickFormatterSpec(
          map['tickFormatterSpec'],
          validate: false,
        ),
        tickProviderSpec: decodeNumericTickProviderSpec(
          map['tickProviderSpec'],
        ),
        viewport: decodeNumericExtents(
          map['viewport'],
          validate: false,
        ),
      );
    }
  }

  return result;
}