Reviews Flutter/Dart code changes for idiomatic patterns, widget best practices, state management, performance, accessibility, and security. Reports findings grouped by severity with fix guidance.
From everything-claude-codenpx claudepluginhub sandaruwanweerawardhana/claude-code/flutter-reviewReviews Flutter/Dart code changes for idiomatic patterns, widget best practices, state management, performance, accessibility, and security. Reports findings grouped by severity with fix guidance.
/flutter-reviewFlutter/Dart code review for widget architecture, performance, null safety, and accessibility. Invokes the flutter-reviewer agent.
/flutter-reviewReviews Flutter/Dart code changes for idiomatic patterns, widget best practices, state management, performance, accessibility, and security. Reports findings grouped by severity with fix guidance.
/flutter-reviewPerform comprehensive Flutter code review with priority-based analysis (P0/P1/P2)
This command invokes the flutter-reviewer agent to review Flutter/Dart code changes.
git diff --staged and git diffpubspec.yaml, analysis_options.yaml, state management solutionBefore running /flutter-review, ensure:
/flutter-build first; a review on broken code is incomplete/flutter-test to confirm no regressionsflutter analyze is clean — fix analyzer warnings before reviewUse /flutter-review when:
| Area | Severity |
|---|---|
| Hardcoded secrets, cleartext HTTP | CRITICAL |
| Architecture violations, state management anti-patterns | CRITICAL |
| Widget rebuild issues, resource leaks | HIGH |
Missing dispose(), BuildContext after await | HIGH |
| Dart null safety, missing error/loading states | HIGH |
| Const propagation, widget composition | HIGH |
Performance: expensive work in build() | HIGH |
| Accessibility, semantic labels | MEDIUM |
| Missing tests for state transitions | HIGH |
| Hardcoded strings (l10n) | MEDIUM |
| Pub dependency hygiene | LOW |
User: /flutter-review
Agent:
# Flutter Code Review
## Context
Changed files:
- lib/features/auth/presentation/login_page.dart
- lib/features/auth/data/auth_repository_impl.dart
State management: Riverpod (detected from pubspec.yaml)
Architecture: feature-first
## Security Pre-scan
✓ No hardcoded secrets detected
✓ No cleartext HTTP calls
## Review Findings
[HIGH] BuildContext used after async gap without mounted check
File: lib/features/auth/presentation/login_page.dart:67
Issue: `context.go('/home')` called after `await auth.login(...)` with no `mounted` check.
Fix: Add `if (!context.mounted) return;` before any navigation after awaits (Flutter 3.7+).
[HIGH] AsyncValue error state not handled
File: lib/features/auth/presentation/login_page.dart:42
Issue: `ref.watch(authProvider)` switches on loading/data but has no `error` branch.
Fix: Add error case to the switch expression or `when()` call to show a user-facing error message.
[MEDIUM] Hardcoded string not localized
File: lib/features/auth/presentation/login_page.dart:89
Issue: `Text('Login')` — user-visible string not using localization system.
Fix: Use the project's l10n accessor: `Text(context.l10n.loginButton)`.
## Review Summary
| Severity | Count | Status |
|----------|-------|--------|
| CRITICAL | 0 | pass |
| HIGH | 2 | block |
| MEDIUM | 1 | info |
| LOW | 0 | note |
Verdict: BLOCK — HIGH issues must be fixed before merge.
/flutter-build — Fix build errors first/flutter-test — Run tests before reviewing/code-review — General code review (language-agnostic)agents/flutter-reviewer.mdskills/flutter-dart-code-review/rules/dart/