Idiomatic Flutter
SkillAI & modelsCompose modern Flutter layouts and widgets idiomatically. Use for widget trees, layout constraints, mounted safety, and UI composition—not BLoC state management, routing, dependency injection, or tests.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Idiomatic Flutter skill
What this skill tells your AI
The instructions your AI receives, as published by hoangnguyen0403/agent-skills-standard in skills/flutter/flutter-idiomatic-flutter/SKILL.md and read by ahel’s review.
Priority: P1 (HIGH)
- Async Gaps: Check
if (context.mounted)before usingBuildContextafterawait. - Composition: Extract complex UI into small widgets. Avoid deep nesting or large helper methods.
- Layout:
- Spacing: Prefer
spacingparameter onRow/Column(Flutter 3.27+) over insertingSizedBox/Gapbetween children. On earlier Flutter versions, useGap(n)instead —spacingwill not compile. - Fallback: Use
Gap(n)orSizedBoxonly whenspacingcannot express the layout (e.g., conditional gaps). - Empty UI: Use
const SizedBox.shrink(). - Intrinsic: Avoid
IntrinsicWidth/Height; useStack+FractionallySizedBoxfor overlays. - Spacing: Use
Gap(n)orSizedBoxoverPaddingfor simple gaps. - Optimization: Use
ColoredBox/Padding/DecoratedBoxinstead ofContainerwhen possible. - Themes: Use extensions for
Theme.of(context)access.
- Spacing: Prefer
Anti-Patterns
- No BuildContext after await without mounted check: Check
context.mountedto prevent crashes across async gaps. - No _buildXxx() helper methods: Extract to
const StatelessWidgetfor proper rebuild control. - No direct controller access in widget: Use BLoC or Riverpod to decouple UI from state.
- No Container for empty space: Use
const SizedBox.shrink().
Signals
- GitHub stars
- 565
- Forks
- 164
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
flutter-idiomatic-flutter- Source
- github.com/hoangnguyen0403/agent-skills-standard