flutter-package-development · git:20260904.132082f · 2026-09-04 · sha256 ee85cf908582d281

flutter-package-development git:20260904.132082fA

Immutable. This exact content is served forever at /api/v1/blob/ee85cf908582d281.

---
name: flutter-package-development
description: Create, evolve, test, or prepare reusable Dart packages and Flutter plugins for distribution. Use when the package itself, its public API, platform support, federation, example app, compatibility, or publication readiness is the deliverable; route app-owned native bridges to flutter-platform-integration.
---

# Flutter Package Development

Treat reusable packages as versioned contracts consumed by independent projects. Preserve SDK bounds, package architecture, supported platforms, and release conventions unless migration is requested.

## Preflight

Inspect `pubspec.yaml`, public exports, examples, tests, platform folders, CI, changelogs, and consumers.
Choose the smallest viable shape:
- Dart package for reusable Dart-only logic.
- Flutter package for reusable widgets without native code.
- Plugin or FFI package when native platform implementations are required.
- Federated plugin only when independent platform ownership or release cadence justifies multiple packages.

Do not convert app-owned bridges into packages merely because code reuse is possible.

## Load references conditionally

- Read [public API and package quality](references/public-api-and-quality.md) for exports, deprecations, semver, and consumer compatibility.
- Read [plugins and federation](references/plugins-and-federation.md) for platform interfaces, registration, FFI, and federated architecture.
- Read [publication readiness](references/publication-readiness.md) for dry-run inspection, pub.dev checklist, and release verification.

## Boundaries

- `flutter-platform-integration` owns app-side native code and low-level channel/FFI mechanics.
- `flutter-dependency-upgrades` owns consumer-side package upgrades in an application.
- `flutter-build-release` owns application stores and binary builds, not pub package publication.

## Verification

Format, analyze, run tests, and exercise the example fixture across all claimed platforms.
When publication readiness is in scope:
- Run `dart pub publish --dry-run` and inspect all output, warnings, and included files. A passing dry run proves neither compatibility nor authorization.
- Never publish, tag, or create releases without explicit user authorization.
- When tool or repository access is missing, provide an executable review plan with clear pass/fail criteria covering metadata, license, changelog, and dry-run output rather than fabricating results.

## Sources

- [Developing packages and plugins](https://docs.flutter.dev/packages-and-plugins/developing-packages)
- [Publishing packages](https://dart.dev/tools/pub/publishing)
- [Package layout conventions](https://dart.dev/tools/pub/package-layout)