Flutter Clinic

Widgets, state, rebuilds, disposal, accessibility, security — rated, with the fix.

Back to SkillSafe
Drop a .dart file here, or
How it works

Nothing to paste? — a Flutter order-history screen with a hardcoded token, a plain http endpoint, a BuildContext used after an await, a subscription nobody cancels, an eagerly built list and a few things done genuinely well. Or , rendered from a saved reply with no run and no charge.

1

Paste or drop the code

A widget, a screen, a controller or a whole .dart file. The quick scanner sizes it up free in your browser: the state management solution, the widget and build() shape, and the classic Flutter pattern hits.

2

Say what you need checked

Full review, or narrow it to widgets and rebuilds, state management, performance, accessibility and theming, or security. A blocking defect is reported whatever the focus; the focus sets where the depth goes.

3

Act on the defects

A verdict that follows the defects, seven areas rated with the reason, and each defect with where it is, what breaks and the fix. Copy one as a PR comment, or take the whole thing as markdown or CSV.

Questions people ask before pasting code

What can I paste?

Any Flutter or Dart source: a single widget, a screen with its State class, a controller, a repository, a model, or a whole file. You can also drag a .dart file onto the box. Pastes over 60,000 characters are clipped by dropping the middle and keeping both ends, and the cut is marked in the code itself so nothing disappears silently.

Does it work with my state management library?

Yes, and it will not tell you to switch. The review is library-agnostic: it detects what the code already uses — BLoC or Cubit, Riverpod, Provider, GetX, MobX, Signals, ChangeNotifier, ValueNotifier or plain setState — and reviews against that solution's own conventions. Providers watching providers is expected in Riverpod and flagged in BLoC, and the review knows the difference.

What is the area health table?

Seven fixed areas, each rated Strong, Adequate, Weak or Not covered with one sentence of justification: widget structure, state management, performance and rebuilds, lifecycle and disposal, accessibility and theming, security and data handling, and Dart idioms. Not covered is the honest answer when the paste does not exercise an area. The page checks the ratings against the defects and warns when an area rated strong also carries a blocking defect.

What does the verdict mean?

One of four: Ship it (nothing blocking, nothing to fix first), Needs fixes (should-fix defects a competent author can clear before merging), Rework (at least one blocking defect — a credential in source, a crash path, a leak, a data-loss path) or Not reviewable (the input is not Dart or Flutter, or is too fragmentary to review honestly). The page checks the verdict against the defects and warns you when the two disagree.

Will it invent problems that are not in my code?

It is instructed not to: every defect must point at code actually present in the paste, it may not assert runtime behaviour it cannot see, it may not assume a package the imports do not show, and it may not pad severity to justify a verdict. The free browser scan runs first and its pattern hits are passed in as hints to cross-check — a hit the reading of the code does not support is dropped as a false positive.

What is free, and what costs credits?

The quick scan is free, needs no sign-in, and never leaves your browser: it guesses the state management solution, counts widget classes and build() methods, and flags credentials in source, plain http endpoints, BuildContext used after an await, subscriptions with no teardown, eagerly built lists, expensive work in build(), hardcoded colours, missing const, bang operators, broad catches, print() calls and TODO markers, each with the line numbers where it matched. The example review is also free — it renders a saved reply with no run. Only the full review calls the model, and the page shows what is reserved before you press the button.

What happens when I fix things and review again?

Reviews are saved to your SkillSafe account, so a second review of the same file is compared against the previous one: each defect is marked still here or new, resolved defects are listed, and the headline says how the verdict moved. That comparison is done in your browser from records you already have, so it costs nothing extra.

Can I drive it from a script?

Yes. The API guide shows the whole path — token, balance, estimate, run and streamed run — in cURL, Python, JavaScript, Go, Java, Ruby, PHP and C#, with the exact input fields and the reply format, so a CI job can fail a build on a Rework verdict. The token page shows and copies the token this browser is already using.