flutter-ui-design

Flutter UI Design Guidelines

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "flutter-ui-design" with this command: npx skills add k9i-0/flutter_autonomous_template/k9i-0-flutter-autonomous-template-flutter-ui-design

Flutter UI Design Guidelines

Purpose

This skill provides guidelines to make Flutter app UIs stand out from "typical defaults" and achieve professional, impressive designs.

Typography

Patterns to Avoid

  • Using only default Roboto

  • Monotonous font weights (Regular/Bold only)

  • Uniform text sizes

Recommended Approach

// Use modern fonts with Google Fonts import 'package:google_fonts/google_fonts.dart';

// For titles: Distinctive display fonts GoogleFonts.poppins(fontWeight: FontWeight.w700) GoogleFonts.inter(fontWeight: FontWeight.w800) GoogleFonts.plusJakartaSans()

// For body: Readable sans-serif GoogleFonts.inter() GoogleFonts.dmSans()

// Size hierarchy with contrast in mind headlineLarge: 32sp, weight: 800 headlineMedium: 24sp, weight: 700 titleLarge: 20sp, weight: 600 bodyLarge: 16sp, weight: 400 labelSmall: 12sp, weight: 500

Font Weight Usage

  • Extreme contrast: Combine w300 and w800

  • Bold for headings (w600-w800), regular for body (w400)

Color & Theme

Patterns to Avoid

  • Material Design default blue/purple

  • Subtle, uniform color palettes

  • Gray-only safe UIs

Recommended Approach

// Dark theme: Deep background + vivid accents ColorScheme.dark( surface: Color(0xFF0F0F14), // Deep dark gray surfaceContainerHighest: Color(0xFF1A1A23), primary: Color(0xFF6366F1), // Vivid indigo secondary: Color(0xFF22D3EE), // Cyan accent tertiary: Color(0xFFF472B6), // Pink accent )

// Light theme: Clean white + vivid accents ColorScheme.light( surface: Color(0xFFFAFAFC), surfaceContainerHighest: Color(0xFFF1F5F9), primary: Color(0xFF4F46E5), // Indigo secondary: Color(0xFF0EA5E9), // Sky blue tertiary: Color(0xFFEC4899), // Pink )

Color Usage Points

  • Dominant Color: Use one primary color boldly

  • Sharp Accents: Use secondary color sparingly as accent

  • Semantic Colors: Success=green, Error=red, Warning=yellow intuitively

Elevation & Depth

Patterns to Avoid

  • Too flat designs

  • Uniform elevation

  • Overusing shadows

Recommended Approach

// Cards with subtle depth Card( elevation: 0, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), color: theme.colorScheme.surfaceContainerHighest, child: ... )

// Soft shadow (low contrast) BoxDecoration( borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.black.withOpacity(0.04), blurRadius: 10, offset: Offset(0, 4), ), ], )

// Glassmorphism effect ClipRRect( borderRadius: BorderRadius.circular(16), child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), child: Container( color: Colors.white.withOpacity(0.1), child: ... ), ), )

Motion & Animation

Patterns to Avoid

  • Rigid UI without animations

  • Excessive, scattered animations

  • Inconsistent timing

Recommended Approach

// Page transition: Smooth fade+slide PageRouteBuilder( transitionDuration: Duration(milliseconds: 300), pageBuilder: (_, __, __) => DestinationPage(), transitionsBuilder: (, animation, __, child) { return FadeTransition( opacity: animation, child: SlideTransition( position: Tween<Offset>( begin: Offset(0, 0.05), end: Offset.zero, ).animate(CurvedAnimation( parent: animation, curve: Curves.easeOutCubic, )), child: child, ), ); }, )

// List items: Staggered Animation AnimatedList + interval-based delays

// Tap feedback: Subtle scale Transform.scale( scale: isPressed ? 0.98 : 1.0, child: AnimatedContainer( duration: Duration(milliseconds: 100), ... ), )

Timing Guidelines

  • Short operations (tap): 100-150ms

  • Screen transitions: 250-350ms

  • Complex animations: 400-600ms

  • Curve: Base on easeOutCubic , easeInOutCubic

Layout & Spacing

Patterns to Avoid

  • Cramped UI

  • Irregular padding

  • Insufficient spacing between elements

Recommended Approach

// 8px-based spacing system const spacing = ( xs: 4.0, sm: 8.0, md: 16.0, lg: 24.0, xl: 32.0, xxl: 48.0, );

// Content area margins Padding( padding: EdgeInsets.symmetric(horizontal: 20, vertical: 16), child: ... )

// Card padding larger than outer Card( child: Padding( padding: EdgeInsets.all(20), child: ... ), )

// Gaps between elements SizedBox(height: 16) // Between related elements SizedBox(height: 32) // Between sections

Components

Buttons

// Primary button: Rounded corners + sufficient padding FilledButton( style: FilledButton.styleFrom( padding: EdgeInsets.symmetric(horizontal: 24, vertical: 16), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), child: Text('Action'), )

// Outline button OutlinedButton( style: OutlinedButton.styleFrom( side: BorderSide(color: theme.colorScheme.outline, width: 1.5), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), )

Input Fields

TextField( decoration: InputDecoration( filled: true, fillColor: theme.colorScheme.surfaceContainerHighest, border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide.none, ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide( color: theme.colorScheme.primary, width: 2, ), ), contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 16), ), )

FAB

FloatingActionButton( elevation: 2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), child: Icon(Icons.add), )

Background

Recommended Techniques

// Gradient background Container( decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ theme.colorScheme.surface, theme.colorScheme.surface.withOpacity(0.95), ], ), ), )

// Subtle pattern (dots, grid) CustomPaint( painter: DotPatternPainter( color: theme.colorScheme.outline.withOpacity(0.05), spacing: 20, ), )

Checklist

Checklist when implementing UI:

  • Using fonts other than default

  • Color palette has accent colors

  • Appropriate margins/padding are set

  • Interactions have feedback (animations)

  • Component corner radii are unified (12-16px recommended)

  • Text hierarchy (size/weight) is clear

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

ui-theming

No summary provided by upstream source.

Repository SourceNeeds Review
General

self-review

No summary provided by upstream source.

Repository SourceNeeds Review
General

requirements-gathering

No summary provided by upstream source.

Repository SourceNeeds Review