Back to skills
SkillHub ClubDesign ProductFull StackFrontendDesigner
flutter-ui-ux
Imported from https://github.com/ajianaz/skills-collection.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Stars
1
Hot score
77
Updated
March 20, 2026
Overall rating
C2.8
Composite score
2.8
Best-practice grade
A88.4
Install command
npx @skill-hub/cli install ajianaz-skills-collection-flutter-ui-ux
Repository
ajianaz/skills-collection
Skill path: skills/flutter-ui-ux
Imported from https://github.com/ajianaz/skills-collection.
Open repositoryBest for
Primary workflow: Design Product.
Technical facets: Full Stack, Frontend, Designer.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: ajianaz.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install flutter-ui-ux into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/ajianaz/skills-collection before adding flutter-ui-ux to shared team environments
- Use flutter-ui-ux for development workflows
Works across
Claude CodeCodex CLIGemini CLIOpenCode
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: flutter-ui-ux
description: |
Comprehensive Flutter UI/UX development skill for creating beautiful, responsive, and animated mobile applications. Use when user asks to:
(1) Build Flutter UI components or screens
(2) Implement animations and transitions
(3) Design responsive layouts
(4) Create custom widgets and themes
(5) Optimize UI performance and accessibility
Triggers: "create Flutter UI", "build Flutter screen", "Flutter animations", "responsive Flutter layout", "custom Flutter widgets", "Flutter theme design"
---
# Flutter UI/UX Development
Create beautiful, responsive, and animated Flutter applications with modern design patterns and best practices.
## Core Philosophy
**"Mobile-first, animation-enhanced, accessible design"** - Focus on:
| Priority | Area | Purpose |
|----------|------|---------|
| 1 | Widget Composition | Reusable, maintainable UI components |
| 2 | Responsive Design | Adaptive layouts for all screen sizes |
| 3 | Animations | Smooth, purposeful transitions and micro-interactions |
| 4 | Custom Themes | Consistent, branded visual identity |
| 5 | Performance | 60fps rendering and optimal resource usage |
## Development Workflow
Execute phases sequentially. Complete each before proceeding.
### Phase 1: Analyze Requirements
1. **Understand app structure** - Identify existing widgets, screens, and navigation
2. **Design system review** - Check existing themes, colors, and typography
3. **Platform considerations** - Note iOS/Android specific requirements
4. **Performance constraints** - Identify animation complexity and rendering needs
Output: UI requirements analysis with component breakdown.
### Phase 2: Design Widget Architecture
1. **Widget hierarchy planning** - Design composition tree
2. **State management strategy** - Choose StatefulWidget vs StatelessWidget
3. **Custom widget identification** - Plan reusable components
4. **Theme integration** - Define color schemes and typography
Output: Widget architecture diagram and component specifications.
### Phase 3: Implement Core UI
1. **Create base widgets** - Build foundational components
2. **Implement responsive layouts** - Use MediaQuery, LayoutBuilder, Flex/Expanded
3. **Add custom themes** - ThemeData, ColorScheme, TextThemes
4. **Integrate navigation** - Implement routing and transitions
**Widget Composition Patterns:**
```dart
// ✅ DO: Compose small, reusable widgets
class CustomCard extends StatelessWidget {
final Widget child;
final EdgeInsets padding;
const CustomCard({required this.child, this.padding = EdgeInsets.all(16)});
@override
Widget build(BuildContext context) {
return Card(
elevation: 4,
child: Padding(padding: padding, child: child),
);
}
}
// ✅ DO: Use const constructors where possible
const Icon(Icons.add) // Better than Icon(Icons.add)
```
### Phase 4: Add Animations
1. **Implicit animations** - AnimatedContainer, AnimatedOpacity
2. **Explicit animations** - AnimationController with Tween
3. **Hero animations** - Screen transitions with Hero widgets
4. **Micro-interactions** - Button presses, hover effects, loading states
**Animation Performance Rules:**
```dart
// ✅ DO: Use performance-optimized animations
AnimatedBuilder(
animation: controller,
builder: (context, child) => Transform.rotate(
angle: controller.value * 2 * math.pi,
child: child, // Pass child to avoid rebuilding
),
child: const Icon(Icons.refresh),
)
// ❌ DON'T: Animate expensive operations
// Avoid animating complex layouts or heavy widgets
```
### Phase 5: Optimize and Test
1. **Performance profiling** - Use Flutter DevTools
2. **Accessibility testing** - Screen readers, contrast ratios
3. **Responsive testing** - Multiple screen sizes and orientations
4. **Animation smoothness** - 60fps validation
## Quick Reference
### Responsive Design Patterns
| Technique | Use Case | Implementation |
|-----------|-----------|----------------|
| LayoutBuilder | Responsive layouts | `LayoutBuilder(builder: (context, constraints) => ...)` |
| MediaQuery | Screen info | `MediaQuery.of(context).size.width` |
| Flexible/Expanded | Flex layouts | `Flexible(child: ...)` or `Expanded(child: ...)` |
| AspectRatio | Fixed ratios | `AspectRatio(aspectRatio: 16/9, child: ...)` |
### Animation Types
| Type | Widget | Duration | Use Case |
|-------|---------|----------|----------|
| Fade | AnimatedOpacity | 200-300ms | Show/hide content |
| Slide | SlideTransition | 250-350ms | Screen transitions |
| Scale | AnimatedScale | 150-250ms | Button presses |
| Rotation | RotationTransition | 1000-2000ms | Loading indicators |
### Custom Widget Examples
**Themed Button:**
```dart
class ThemedButton extends StatelessWidget {
final String text;
final VoidCallback onPressed;
const ThemedButton({required this.text, required this.onPressed});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed,
style: ElevatedButton.styleFrom(
backgroundColor: Theme.of(context).colorScheme.primary,
foregroundColor: Theme.of(context).colorScheme.onPrimary,
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
child: Text(text),
);
}
}
```
**Responsive Card:**
```dart
class ResponsiveCard extends StatelessWidget {
final Widget child;
const ResponsiveCard({required this.child});
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
if (constraints.maxWidth > 600) {
return _buildWideLayout(child);
} else {
return _buildNarrowLayout(child);
}
},
);
}
Widget _buildWideLayout(Widget child) {
return Card(
margin: const EdgeInsets.all(16),
child: Padding(padding: const EdgeInsets.all(24), child: child),
);
}
Widget _buildNarrowLayout(Widget child) {
return Card(
margin: const EdgeInsets.all(8),
child: Padding(padding: const EdgeInsets.all(16), child: child),
);
}
}
```
## Resources
- **Widget patterns**: See `references/widget-patterns.md`
- **Animation examples**: See `references/animation-patterns.md`
- **Theme templates**: See `references/theme-templates.md`
- **Performance guide**: See `references/performance-optimization.md`
## Technical Stack
- **Core Widgets**: StatelessWidget, StatefulWidget, InheritedWidget
- **Layout**: Row, Column, Stack, GridView, ListView
- **Animation**: AnimationController, Tween, AnimatedWidget
- **Themes**: ThemeData, ColorScheme, TextTheme
- **Navigation**: Navigator, MaterialPageRoute, Hero
## Accessibility (Required)
Always implement:
```dart
// Semantic labels for screen readers
Semantics(
label: 'Add item to cart',
button: true,
child: IconButton(icon: Icon(Icons.add_cart), onPressed: () {}),
)
// High contrast support
Theme.of(context).colorScheme.contrast() == Brightness.dark
// Font scaling
MediaQuery.of(context).accessibleNavigation
```
## Performance Guidelines
- Use `const` widgets where possible
- Prefer `ListView.builder` for long lists
- Avoid unnecessary rebuilds with `const` keys
- Use `RepaintBoundary` for complex animations
- Profile with Flutter DevTools regularly
---
This Flutter UI/UX skill transforms mobile app development into a systematic process that ensures beautiful, responsive, and performant applications with exceptional user experiences.