describeMissingAncestor method

  1. @override
List<DiagnosticsNode> describeMissingAncestor ({@required Type expectedAncestorType })
override

Adds a description of a specific type of widget missing from the current build context's ancestry tree.

You can find an example of using this method in debugCheckHasMaterial.

Implementation

@override
List<DiagnosticsNode> describeMissingAncestor({ @required Type expectedAncestorType }) {
  final List<DiagnosticsNode> information = <DiagnosticsNode>[];
  final List<Element> ancestors = <Element>[];
  visitAncestorElements((Element element) {
    ancestors.add(element);
    return true;
  });

  information.add(DiagnosticsProperty<Element>(
    'The specific widget that could not find a $expectedAncestorType ancestor was',
    this,
    style: DiagnosticsTreeStyle.errorProperty,
  ));

  if (ancestors.isNotEmpty) {
    information.add(describeElements('The ancestors of this widget were', ancestors));
  } else {
    information.add(ErrorDescription(
      'This widget is the root of the tree, so it has no '
      'ancestors, let alone a "$expectedAncestorType" ancestor.'
    ));
  }
  return information;
}