SuperAPI AI Directory

flutter-media

Coding & development

View repository

Updated 11-10 02:39

About this skill

Flutter Media

Deliver media behavior that respects the user's intent, the resolved player or capture SDK, and each target's lifecycle. Preserve existing packages and architecture. Installing this skill requires no provider account, server key, room, stream URL, or camera/microphone access.

Establish the media contract

Read pubspec.yaml, the lockfile, SDK constraints, current adapters/controllers, native configuration, and tests. Establish:

  • Capture, recorded-file playback, live viewing, broadcasting, or interactive calling; an image-buffer stream is not an encoded broadcast.
  • Source and output, format/codec, target platforms, permissions, foreground/background requirements, and intended behavior on interruption or exit.
  • For live sessions, service ownership, participant identity, host/viewer permissions, and what proves actual remote media delivery.

Use the current SDK's supported facilities before adding another player, audio-session owner, signaling stack, or provider. Inspect version-specific native/browser requirements instead of copying setup or API names from a newer release. Keep secrets in the authorized service boundary, not in Flutter or logs.

Read the relevant mode

Read verification before claiming capture, playback, live delivery, or target compatibility. Read several mode references only when the task crosses their boundaries.

Keep ownership explicit

Give each controller, track, subscription, renderer, temporary file, and session one lifecycle owner. Invalidate abandoned asynchronous work; release resources returned by stale successful initialization instead of only ignoring its UI update. Handle cleanup failures explicitly and follow SDK-specific ordering for exclusive hardware acquisition. Do not reopen capture or resume audio merely because the app or connection resumes.

Model permission denial, initialization, ready/live, interruption/reconnection, terminal error, user stop, and disposal as distinct outcomes where relevant. Keep permission prompts and media effects outside widget build. Stop only resources this feature owns; protect user-authored and retained recordings from disposable-test cleanup.

Close the evidence loop

For an implementation or a tool-free plan, explicitly identify the resolved package/Flutter/native contract checks and existing SDK responsibilities before adding lifecycle, focus, or recovery handlers. A package being present does not establish who already owns those effects. At the affected boundary, state the stop/leave cleanup and the focused acceptance checks, including the native or two-endpoint scenario still needed. Label unavailable inspection and execution as pending; do not substitute a list of fake tests for the media behavior they cannot prove.

Neighbor boundaries

  • Networking owns ordinary HTTP/WebSocket/SSE messages and upload transport; this skill owns audio/video capture, playback, and media sessions.
  • Platform integration owns custom native bridges/plugins; background execution owns OS continuation/scheduling when required. Pair them only when that boundary changes.
  • Authentication/security own identity lifecycle and wider threat audits. Media integration still respects service-enforced publish permissions and confidential credentials.
  • Device testing operates concrete targets; performance owns measured jank/latency/memory diagnosis. UI design owns visual art direction.
  • Document parsing/PDF editing, generic file management/sharing, and text-only chat are outside this skill. Media capture does not authorize uploading or publishing its output.