Dart + Flutter

VibeCode QA natively supports Dart and Flutter projects — same 34 checks, adapted to the Dart ecosystem.

Quick Start

npx @vibecodeqa/cli

Set up CI + auto-fix

npx @vibecodeqa/cli init    # creates .github/workflows/vibecodeqa.yml
npx @vibecodeqa/cli fix     # auto-fix lint issues + show fix suggestions

Auto-detects: pubspec.yaml, analysis_options.yaml, Flutter vs pure Dart, test runner, melos workspaces.

How Detection Works

When pubspec.yaml exists, VibeCode QA switches to Dart mode:

SignalDetection
pubspec.yaml contains flutter:Flutter project
flutter_test: in dev_dependenciesTest runner: flutter_test
test: in dev_dependenciesTest runner: dart_test
analysis_options.yaml existsLinter: dart_analyze
melos.yaml existsMonorepo: melos workspace
pubspec.lockPackage manager: pub

Dart-Adapted Checks

Foundations

CheckDart AdaptationTool
StructureChecks pubspec.yaml, analysis_options.yaml, LICENSE, .gitignore. Source in lib/ (not src/)built-in
LintRuns dart analyze --format=machinedart analyze
Type SafetyCounts dynamic type usage, as dynamic casts, // ignore: directives, late without finalbuilt-in

Testing

CheckDart AdaptationTool
Test DiscoveryFinds *_test.dart files in test/ directorybuilt-in
Test ExecutionRuns flutter test or dart testflutter_test
PyramidClassifies tests into unit/widget/integration/golden layersbuilt-in

Dependencies

CheckDart AdaptationTool
OutdatedRuns dart pub outdated --jsondart pub
Major OutdatedFlags packages behind by a major versionbuilt-in

Unchanged (work the same as TS/JS)

Complexity, duplication, error handling, secrets, security patterns, architecture, confusion, context, docs, best practices, performance — all work on Dart code files.

Melos Monorepo Support

Detected via melos.yaml. When found:

# melos.yaml
name: my_project
packages:
  - packages/*
  - apps/*

Recommended Tool Setup

# Core (included with Flutter SDK)
dart analyze                       # lint
dart test / flutter test           # tests
dart pub outdated                  # dependency freshness

# Security
brew install gitleaks              # secret detection

# Code quality (no extra install needed)
# VibeCode QA handles complexity, duplication, architecture

Dart-Specific Patterns We Check

Type Safety

PatternSeverityWhy
dynamic type annotationWarningBypasses static analysis — use Object or proper types
as dynamic castWarningUnsafe cast — will crash at runtime if wrong type
// ignore: directiveErrorDisables analyzer for a line — hiding real issues
// ignore_for_file:ErrorDisables analyzer for entire file — very dangerous
late without finalInfoMutable late vars can throw if accessed before init

What We Don't Cover (Yet)

Home · Tool Decisions · TypeScript + React · Node.js Guide