Flutter AI Integration
Integrate model behavior as an unreliable, asynchronous external capability with an explicit product contract. Preserve the project's provider, backend, networking client, state management, persistence, and UI architecture unless the user requests a migration.
Installing or loading this skill never requires an OpenAI or other provider API key. Do not add a provider SDK, account setup, credential, or backend merely because this skill was selected.
Preflight
Read pubspec.yaml, SDK constraints, existing AI or API adapters, backend boundary, authentication, model configuration, state ownership, persistence, privacy requirements, tests, and platform targets. Clarify the intended capability and failure behavior before choosing a model, provider, SDK, or UI toolkit.
Keep model and provider details behind a narrow application-owned interface. Treat output, tool arguments, citations, and structured data as untrusted input. Define cancellation, timeout, retry, partial-result, quota, offline, and unsupported-capability behavior.
Load references conditionally
- Read service boundary and secrets when selecting client versus backend responsibilities, credentials, provider abstraction, safety, privacy, or model configuration.
- Read streaming, tools, and state when implementing streamed output, conversations, attachments, structured responses, or tool/function calls.
- Read Flutter AI Toolkit and GenUI only when the project uses or is considering those Flutter packages. Do not introduce them by default.
Boundaries
flutter-networking owns generic HTTP, WebSocket, SSE, authentication refresh, and transport reliability; this skill owns model-specific semantics on top.
dart-concurrency owns general stream races, cancellation primitives, and isolate behavior.
flutter-persistence owns durable storage and offline synchronization; this skill defines what conversation or model state may be retained.
flutter-security owns a broad threat review; this skill enforces the model boundary, credential placement, untrusted output handling, and least-privilege tools.
flutter-ui-patterns and flutter-accessibility own general interface composition and accessibility.
Verification
Use a deterministic fake model or recorded adapter for ordinary automated tests. Cover partial chunks, cancellation, timeout, malformed structured output, tool denial and failure, repeated or reordered events, quota errors, and provider unavailability. Use a real provider only when credentials, cost, network access, and environment are explicitly in scope; keep such tests separate and non-destructive.
Verify the visible stream and state transitions on affected platforms, including restart or restoration when required. Report which behavior was fake-tested, which was exercised end to end, the exact provider/model configuration when relevant, and any cost, safety, or backend boundary not verified.
Sources
1---2name: flutter-ai-integration3description: Build or review provider-neutral AI features in Flutter, including streaming responses, conversation state, structured output, tool calls, attachments, cancellation, and safe service boundaries. Use when model behavior is part of the product; do not use for ordinary APIs, product analytics, or generic chat between people.4---56# Flutter AI Integration78Integrate model behavior as an unreliable, asynchronous external capability with an explicit product contract. Preserve the project's provider, backend, networking client, state management, persistence, and UI architecture unless the user requests a migration.910Installing or loading this skill never requires an OpenAI or other provider API key. Do not add a provider SDK, account setup, credential, or backend merely because this skill was selected.1112## Preflight1314Read `pubspec.yaml`, SDK constraints, existing AI or API adapters, backend boundary, authentication, model configuration, state ownership, persistence, privacy requirements, tests, and platform targets. Clarify the intended capability and failure behavior before choosing a model, provider, SDK, or UI toolkit.1516Keep model and provider details behind a narrow application-owned interface. Treat output, tool arguments, citations, and structured data as untrusted input. Define cancellation, timeout, retry, partial-result, quota, offline, and unsupported-capability behavior.1718## Load references conditionally1920- Read [service boundary and secrets](references/service-boundary-and-secrets.md) when selecting client versus backend responsibilities, credentials, provider abstraction, safety, privacy, or model configuration.21- Read [streaming, tools, and state](references/streaming-tools-and-state.md) when implementing streamed output, conversations, attachments, structured responses, or tool/function calls.22- Read [Flutter AI Toolkit and GenUI](references/flutter-ai-toolkit-and-genui.md) only when the project uses or is considering those Flutter packages. Do not introduce them by default.2324## Boundaries2526- `flutter-networking` owns generic HTTP, WebSocket, SSE, authentication refresh, and transport reliability; this skill owns model-specific semantics on top.27- `dart-concurrency` owns general stream races, cancellation primitives, and isolate behavior.28- `flutter-persistence` owns durable storage and offline synchronization; this skill defines what conversation or model state may be retained.29- `flutter-security` owns a broad threat review; this skill enforces the model boundary, credential placement, untrusted output handling, and least-privilege tools.30- `flutter-ui-patterns` and `flutter-accessibility` own general interface composition and accessibility.3132## Verification3334Use a deterministic fake model or recorded adapter for ordinary automated tests. Cover partial chunks, cancellation, timeout, malformed structured output, tool denial and failure, repeated or reordered events, quota errors, and provider unavailability. Use a real provider only when credentials, cost, network access, and environment are explicitly in scope; keep such tests separate and non-destructive.3536Verify the visible stream and state transitions on affected platforms, including restart or restoration when required. Report which behavior was fake-tested, which was exercised end to end, the exact provider/model configuration when relevant, and any cost, safety, or backend boundary not verified.3738## Sources3940- [Flutter AI overview](https://docs.flutter.dev/ai)41- [Flutter AI Toolkit](https://docs.flutter.dev/ai/ai-toolkit)42- [Flutter GenUI](https://docs.flutter.dev/ai/genui)43- [Flutter networking](https://docs.flutter.dev/data-and-backend/networking)