Agent-skills-standard flutter-idiomatic-flutter

Compose modern Flutter layouts and widgets idiomatically. Use when composing Flutter widget trees, managing layout constraints, or following idiomatic Flutter patterns. (triggers: lib/presentation/**/*.dart, context.mounted, SizedBox, Gap, composition, shrink)

install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/flutter/flutter-idiomatic-flutter" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-flutter-idiomatic-flutter && rm -rf "$T"
manifest: skills/flutter/flutter-idiomatic-flutter/SKILL.md
source content

Idiomatic Flutter

Priority: P1 (OPERATIONAL)

  • Async Gaps: Check
    if (context.mounted)
    before using
    BuildContext
    after
    await
    .
  • Composition: Extract complex UI into small widgets. Avoid deep nesting or large helper methods.
  • Layout:
  • Spacing: Use
    Gap(n)
    or
    SizedBox
    over
    Padding
    for simple gaps.
  • Empty UI: Use
    const SizedBox.shrink()
    .
  • Intrinsic: Avoid
    IntrinsicWidth/Height
    ; use
    Stack
    +
    FractionallySizedBox
    for overlays.
  • Optimization: Use
    ColoredBox
    /
    Padding
    /
    DecoratedBox
    instead of
    Container
    when possible.
  • Themes: Use extensions for
    Theme.of(context)
    access.

Anti-Patterns

  • No BuildContext after await without mounted check: Check
    context.mounted
    to prevent crashes across async gaps.
  • No _buildXxx() helper methods: Extract to
    const StatelessWidget
    for proper rebuild control.
  • No direct controller access in widget: Use BLoC or Signals to decouple UI from state.
  • No Container for empty space: Use
    const SizedBox.shrink()
    .