For Flutter developers staring at a red layout error or a striped overflow
Layout LensConstraints go down, sizes go up. Find the widget that breaks the rule, measure the rows, get the test - then the corrected tree.
Paste the Dart of one screen, and the error Flutter printed if there is one. Your browser works out, for every widget, whether the width and height it receives are bounded - a Row's children get unbounded width, a Column's and a list's unbounded height - and flags lists with nothing to fill, Expanded outside a Row or Column, Positioned outside a Stack, double.infinity with no edge, text fields with no width, and rows whose fixed widths overflow the narrowest screen, with the arithmetic. It ties your error to its line and writes the widget test. Then the review, and the corrected tree.
The widget tree free
The scan free
What the scan found
The pasted error, read
The rows, measured at the narrowest width
The skill's layout workflow
Your widget test and checklist free
The skill's validation step as a test: pump the screen at the narrowest width and at 1280 dp and expect no exception - a layout error or an overflow fails it, in CI, before anyone opens the app.
test/layout_test.dart
The review metered
Pricing as soon as the session is ready...
Sign inThe reply could not be read. Here it is as it came back:
Caveats
Caveats
The page's check of this reply
Saved screens
How it works - and what it cannot see
The scan reads the Dart itself: comments and strings are masked, every call is matched to its closing bracket, its named arguments are read at their own depth, and every widget is linked to its parent and the argument it sits in - through your own widget classes and Widget helpers when each is used once. Then it applies the skill's rule: a Row gives its children unbounded width, a Column, a ListView and a SingleChildScrollView give theirs unbounded height, an Expanded passes on its flex box's room, a SizedBox fixes an axis. It flags only what follows for certain - a widget it cannot place is left unknown, never guessed - and measures every Row with fixed-width children against the narrowest screen, less every padding it can read on the way up. Inside a branch such as if (constraints.maxWidth > 600) it measures at that width instead.
It cannot see widgets from files you did not paste, content that is taller than its box, or whether a structure suits the screen - that is the review. The page re-scans the corrected tree, so a fix that did not land is flagged rather than trusted, and the free test tells you in CI.