decodeNumericTickProviderSpec static method

NumericTickProviderSpec? decodeNumericTickProviderSpec(
  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:

{
  "dataIsInWholeNumbers": <bool>,
  "desiredMaxTickCount": <int>,
  "desiredMinTickCount": <int>,
  "desiredTickCount": <int>,
  "ticks": <List<TickSpec<num>>,
  "type": <"basic" | "bucketing" | "end_points" | "static">,
  "zeroBound": <bool>
}

Implementation

static common.NumericTickProviderSpec? decodeNumericTickProviderSpec(
  dynamic map, {
  bool validate = true,
}) {
  common.NumericTickProviderSpec? result;

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

    switch (type) {
      case 'basic':
        result = common.BasicNumericTickProviderSpec(
          dataIsInWholeNumbers: map['dataIsInWholeNumbers'] == null
              ? null
              : JsonClass.parseBool(map['dataIsInWholeNumbers']),
          desiredMaxTickCount: JsonClass.parseInt(map['desiredMaxTickCount']),
          desiredMinTickCount: JsonClass.parseInt(map['desiredMinTickCount']),
          desiredTickCount: JsonClass.parseInt(map['desiredTickCount']),
          zeroBound: map['zeroBound'] == null
              ? null
              : JsonClass.parseBool(map['zeroBound']),
        );
        break;

      case 'bucketing':
        result = common.BucketingNumericTickProviderSpec(
          dataIsInWholeNumbers: map['dataIsInWholeNumbers'] == null
              ? null
              : JsonClass.parseBool(map['dataIsInWholeNumbers']),
          desiredMaxTickCount: JsonClass.parseInt(map['desiredMaxTickCount']),
          desiredMinTickCount: JsonClass.parseInt(map['desiredMinTickCount']),
          desiredTickCount: JsonClass.parseInt(map['desiredTickCount']),
          zeroBound: map['zeroBound'] == null
              ? null
              : JsonClass.parseBool(map['zeroBound']),
        );
        break;

      case 'end_points':
        result = const common.NumericEndPointsTickProviderSpec();
        break;

      case 'static':
        result = common.StaticNumericTickProviderSpec(
          decodeTickSpecList<num>(map['ticks'])!,
        );
        break;

      default:
        throw Exception(
          '[decodeNumericTickProviderSpec]: unknown type encountered: [$type]',
        );
    }
  }

  return result;
}