getOverflowRenderFlexList method

List<RenderFlex> getOverflowRenderFlexList({
  1. Finder? of,
  2. bool matchRoot = false,
  3. bool skipOffstage = true,
})

Returns the overflowing RenderFlex list of descendant Finder.

RenderFlex is the RenderObject of the Flex widgets like Row and Column.

See:

  1. https://docs.flutter.dev/tools/devtools/inspector#flex-layouts
  2. https://docs.flutter.dev/testing/common-errors#a-renderflex-overflowed

Implementation

List<RenderFlex> getOverflowRenderFlexList({
  final Finder? of,
  final bool matchRoot = false,
  final bool skipOffstage = true,
}) {
  late final Finder flexFinder;
  if (of == null) {
    flexFinder = find.bySubtype<Flex>();
  } else {
    flexFinder = find.descendant(
      of: of,
      matching: find.bySubtype<Flex>(),
      matchRoot: matchRoot,
      skipOffstage: skipOffstage,
    );
  }
  final renderFlexList = renderObjectList<RenderFlex>(flexFinder);
  final overflowRenderFlexList = <RenderFlex>[];
  for (final renderFlex in renderFlexList) {
    if (renderFlex.toStringShort().contains('OVERFLOWING')) {
      overflowRenderFlexList.add(renderFlex);
    }
  }
  return overflowRenderFlexList;
}