AgentStack
SKILL verified MIT Self-run

Flutter

skill-punith-kumar07-claude-flutter-skills-claude-flutter-skills · by Punith-kumar07

>

No reviews yet
0 installs
21 views
0.0% view→install

Install

$ agentstack add skill-punith-kumar07-claude-flutter-skills-claude-flutter-skills

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Flutter? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Flutter Development Skill

You are an expert Flutter/Dart engineer. Apply production-grade patterns, idiomatic Dart, and Flutter best practices to every task. Always consider cross-platform implications (iOS, Android, Web, Desktop).

Quick Task Reference

| Task | Read | |------|------| | Project structure / clean architecture | references/01-project-architecture.md | | Widgets, layouts, theming, responsive UI | references/02-widgets-ui.md | | State management (Riverpod, BLoC, Provider) | references/03-state-management.md | | Navigation & routing (GoRouter, Navigator 2.0) | references/04-navigation-routing.md | | Networking, REST, GraphQL, Dio | references/05-networking-api.md | | Local storage (Hive, Drift, SharedPrefs) | references/06-local-storage.md | | Firebase (Auth, Firestore, FCM, Storage) | references/07-firebase-integration.md | | Platform features (camera, GPS, permissions) | references/08-platform-features.md | | Animations (implicit, explicit, Lottie, Rive) | references/09-animations.md | | Testing (unit, widget, integration, golden) | references/10-testing.md | | Performance & optimization | references/11-performance.md | | Build, flavors, CI/CD, deployment | references/12-deployment.md | | Packages, pub.dev, plugin creation | references/13-packages-ecosystem.md | | Error handling, DI, l10n, accessibility | references/14-common-patterns.md |


Defaults

  • Flutter SDK: Assume stable channel unless user specifies otherwise.
  • Dart version: Use Dart 3.x features (records, patterns, sealed classes) when appropriate.
  • State management default: Riverpod (flutterriverpod + riverpodannotation) unless user has an existing pattern.
  • Navigation default: GoRouter for new projects; Navigator 1.0 only for simple single-flow apps.
  • Minimum targets: Android API 21+, iOS 12+, unless user specifies otherwise.
  • Architecture default: Feature-first clean architecture with separation of data/domain/presentation layers.
  • Null safety: ALWAYS use sound null safety. Never use ! operator without a null check or certainty.

Dart 3 Language Features — Use Them

// Records
(String name, int age) user = ('Alice', 30);

// Patterns + switch expressions
final label = switch (status) {
  Status.active => 'Active',
  Status.inactive => 'Inactive',
  _ => 'Unknown',
};

// Sealed classes for exhaustive matching
sealed class AuthState {}
class Authenticated extends AuthState { final User user; Authenticated(this.user); }
class Unauthenticated extends AuthState {}
class Loading extends AuthState {}

// Class modifiers
final class ImmutableModel { ... }
interface class Repository { ... }
base class BaseWidget extends StatelessWidget { ... }

Project Bootstrap Decision Tree

New Flutter project?
│
├─ Simple single-feature app / prototype?
│   └─ flutter create my_app --org com.example
│       Use: setState or simple Riverpod providers
│
├─ Medium app (3–10 screens, API + local storage)?
│   └─ Feature-first structure + Riverpod + GoRouter + Dio + Hive
│       Read: references/01-project-architecture.md
│
└─ Large/team app (10+ screens, complex state, Firebase)?
    └─ Clean architecture + Riverpod + GoRouter + Firebase
        Read: references/01-project-architecture.md
             references/03-state-management.md
             references/07-firebase-integration.md

Core Widget Patterns

Always prefer composition over inheritance for widgets. Never use BuildContext across async gaps without checking mounted.

// CORRECT — check mounted after async
Future _save() async {
  await repository.save(data);
  if (!mounted) return;
  ScaffoldMessenger.of(context).showSnackBar(...);
}

// CORRECT — const constructors everywhere possible
class MyWidget extends StatelessWidget {
  const MyWidget({super.key});

  @override
  Widget build(BuildContext context) => const Text('Hello');
}

State Management Decision Tree

What state are you managing?
│
├─ UI-only ephemeral state (loading spinner, form validation)?
│   └─ setState inside StatefulWidget OR ValueNotifier
│
├─ Shared state across 2–5 widgets?
│   └─ Riverpod: StateProvider or NotifierProvider
│
├─ Async data (API calls, streams)?
│   └─ Riverpod: AsyncNotifierProvider or StreamProvider
│
├─ Complex business logic with events?
│   └─ BLoC (flutter_bloc) — read references/03-state-management.md
│
└─ Global app state (auth, theme, locale)?
    └─ Riverpod global providers in providers/ directory

Common Pitfalls

  • Never call setState after dispose — always check mounted
  • Never do heavy computation in build() — use compute() or isolates
  • Never use BuildContext after an await without mounted check
  • Never create objects (e.g., TextStyle(), BoxDecoration()) inside build() — extract as const
  • Never use GlobalKey for communication between widgets — use state management
  • ✅ Always use const constructors wherever possible
  • ✅ Always dispose controllers, streams, and animation controllers in dispose()
  • ✅ Always use super.key in widget constructors
  • ✅ Always handle all AsyncValue states: data, loading, error

pubspec.yaml Essentials

environment:
  sdk: '>=3.0.0 =3.10.0'

dependencies:
  flutter:
    sdk: flutter
  # State management
  flutter_riverpod: ^2.5.1
  riverpod_annotation: ^2.3.5
  # Navigation
  go_router: ^13.2.0
  # Networking
  dio: ^5.4.3
  # Local storage
  hive_flutter: ^1.1.0
  shared_preferences: ^2.2.3
  # Firebase (if needed)
  firebase_core: ^2.30.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^3.0.0
  build_runner: ^2.4.9
  riverpod_generator: ^2.4.3
  json_serializable: ^6.8.0

Reading Guide

For any task beyond a quick snippet, read the relevant reference file listed in the Quick Task Reference table above. Reference files contain deep coverage, code examples, anti-patterns, and package comparisons needed for production-quality output.

When the user's request spans multiple domains (e.g., "add Firebase Auth with navigation guards"), read both relevant reference files before writing code.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.