Skip to main content
Kodelyth ECC
Command

/flutter-review

Review Flutter/Dart code for idiomatic patterns, widget best practices, state management, performance, accessibility, and security. Invokes the flutter-reviewer agent.

Run:/flutter-review

Flutter Code Review

This command invokes the flutter-reviewer agent to review Flutter/Dart code changes.

What This Command Does

  • Gather Context: Review git diff --staged and git diff
  • Inspect Project: Check pubspec.yaml, analysis_options.yaml, state management solution
  • Security Pre-scan: Check for hardcoded secrets and critical security issues
  • Full Review: Apply the complete review checklist
  • Report Findings: Output issues grouped by severity with fix guidance

Prerequisites

Before running /flutter-review, ensure:

  • Build passes — run /flutter-build first; a review on broken code is incomplete
  • Tests pass — run /flutter-test to confirm no regressions
  • No merge conflicts — resolve all conflicts so the diff reflects only intentional changes
  • flutter analyze is clean — fix analyzer warnings before review

When to Use

Use /flutter-review when:

  • Before submitting a PR with Flutter/Dart changes (after build and tests pass)
  • After implementing a new feature to catch issues early
  • When reviewing someone else's Flutter code
  • To audit a widget, state management component, or service class
  • Before a production release

Review Areas

| 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 |

Example Session

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.

Approval Criteria

  • Approve: No CRITICAL or HIGH issues
  • Block: Any CRITICAL or HIGH issues must be fixed before merge

Related Commands

  • /flutter-build — Fix build errors first
  • /flutter-test — Run tests before reviewing
  • /code-review — General code review (language-agnostic)

Related

  • Agent: agents/flutter-reviewer.md
  • Skill: skills/flutter-dart-code-review/
  • Rules: rules/dart/

Agents this command fires