parse<T> static method

PaywallState<T>? parse<T>(
  1. Object? source,
  2. T? callback(
    1. Object? source
    ), {
  3. T? resolveWith(
    1. T? value
    )?,
})

Implementation

static PaywallState<T>? parse<T>(
  Object? source,
  T? Function(Object? source) callback, {
  T? Function(T? value)? resolveWith,
}) {
  T? resolve(T? value) {
    if (value == null || resolveWith == null) return value;
    return resolveWith(value);
  }

  if (source is Map &&
      source.keys.any((e) => ['primary', 'secondary'].contains(e))) {
    final x = PaywallState(
      primary: resolve(callback(source['primary'])),
      secondary: resolve(callback(source['secondary'])),
    );
    return x.primary == null && x._secondary == null ? null : x;
  }
  final x = resolve(callback(source));
  if (x == null) return null;
  return PaywallState.all(x);
}