Principles for maintainable UI components.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add ngxtm/devkit --skill widgets --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Widgets?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ngxtm-widgets)More formats (shields.io, HTML) on the badges page.
---
name: Flutter UI Widgets
description: Principles for maintainable UI components.
metadata:
labels: [ui, widgets]
triggers:
files: ['**_page.dart', '**_screen.dart', '**/widgets/**']
keywords: [StatelessWidget, const, Theme, ListView]
---
# UI & Widgets (P1)
- **State**: Use `StatelessWidget` by default. `StatefulWidget` only for local state/controllers.
- **Composition**: Extract UI into small, atomic `const` widgets.
- **Theming**: Use `Theme.of(context)`. No hardcoded colors.
- **Layout**: Use `Flex` + `Gap/SizedBox`.
- **Specialized**:
- `SelectionArea`: For multi-widget text selection.
- `InteractiveViewer`: For zoom/pan.
- `ListWheelScrollView`: For pickers.
- `IntrinsicWidth/Height`: Avoid unless strictly required.
- **Large Lists**: Always use `ListView.builder`.
```dart
class AppButton extends StatelessWidget {
final String label;
final VoidCallback onPressed;
const AppButton({super.key, required this.label, required this.onPressed});
@override
Widget build(BuildContext context) => ElevatedButton(onPressed: onPressed, child: Text(label));
}
```
## Related Topics
performance | testing
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!
Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.