of static method

Implementation

static JsonConfigData of(BuildContext context) {
  final view = context.findAncestorWidgetOfExactType<JsonView>();
  final body = context.findAncestorWidgetOfExactType<JsonViewBody>();
  assert(
    view == null || body == null,
    'must provider a JsonView or JsonViewBody',
  );
  JsonConfigData? viewData;
  if (view != null) {
    viewData = JsonConfigData.fromJsonView(view);
  } else if (body != null) {
    viewData = JsonConfigData.fromJsonViewBody(body);
  }

  final current = context.dependOnInheritedWidgetOfExactType<JsonConfig>();
  final fallback = JsonConfigData.fallback(context);

  if (viewData == null) {
    viewData = fallback.merge(current?.data);
  } else {
    viewData = fallback.merge(current?.data).merge(viewData);
  }

  return viewData;
}