NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3376 most downloaded on pub.dev
A Flutter plugin for integrating Google Cast devices. Discover, connect, and control media playback on Chromecast and Cast-enabled devices.
Last release today
07 Oct 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 34 of 35 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
35 releases · first in 2023
Migrate Android plugin to built-in Kotlin ( #94 ) by @Coolcatss in #98
Full Changelog: v1.5.0...v2.0.0
One column per quarter.
Add custom Cast message channels on Android and iOS by @zitob9 in #85
Full Changelog: v1.4.8...v1.5.0
GoogleCastLogger.level filtering with none, error, warning, info, and verbose levels.GCKLogger; Android Cast SDK-internal logs remain outside app control because CAF exposes no public logger configuration API.startDiscovery now accepts activeScan: true on Android to request an active scan (MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN) while a device picker is visible, finding receivers the passive scan misses. No-op on iOS. (#93)trackContentType.dispose() to the session manager platform interface (and both platform implementations) so stream controllers and the method-channel handler can be released in custom lifecycles; late native message events are safely dropped after disposal.sendMessage now returns an INVALID_ARGUMENT platform error for malformed namespaces on Android (consistent with addMessageChannel/removeMessageChannel) and requires the namespace to be registered on Android, matching the existing iOS behavior.sendMessage now also returns an INVALID_ARGUMENT platform error for malformed namespaces, matching Android; runtime failures (no session, unregistered namespace, missing message) still resolve to false on both platforms.dispose(), currentSession returns null and connectionState reports disconnected instead of surfacing the last cached session, and late native session-change events are safely dropped on both platforms.GCKError when a custom-channel send fails instead of silently returning false.>=3.6.0 and Flutter >=3.24.0 (required by permission_handler 13). (#96)permission_handler to ^13.0.2 and pigeon (dev) to ^29.0.6; the example app now builds with compileSdk 37, AGP 8.13.2 and Gradle 8.13.iOS content id fix by @AlexSeednov in #74
Full Changelog: v1.4.6...v1.4.8
loadMedia: Fixed playerPosition briefly showing the previous content's offset right after switching media. Position ticks are now suppressed until the SDK reports a new mediaSessionID and approximateStreamPosition() converges to the requested start time (±5 s tolerance), with a 10 s safety timeout.GCKMediaMetadata entries were written under the raw Dart key names (e.g. title) instead of the canonical Cast keys (e.g. com.google.cast.metadata.TITLE), so the receiver displayed no title/subtitle. Metadata is now stored under the canonical keys; unrecognized keys keep their own name so custom metadata is unaffected.creationDateTime so photo metadata creation dates are no longer dropped.hlsSegmentFormat/hlsVideoSegmentFormat (already handled on iOS), leaving fragmented-MP4 HLS streams stuck loading on the Default Media Receiver. Both fields are now forwarded to MediaInfo, and stream duration is converted from seconds to milliseconds.contentID in media status: The contentID passed from Flutter is now applied to GCKMediaInformationBuilder on load, and cached so it can be substituted into media status updates when the Default Media Receiver does not echo it back. Falls back to contentURL when no contentID is available at all, matching Android behaviour.Reset connection integrated by @AlexSeednov in #73
resetSession() to force a clean iOS Cast session reset after interrupted or stuck connections.iOS stability improvements by @AlexSeednov in #71
setPlaybackRate having no effect on iOS — the method channel handler was missing, so calls from Dart were silently ignored.disconnecting state being skipped on the Dart side when a Cast session ends.endSession, endSessionAndStopCasting, and setStreamVolume not completing their Flutter result callbacks on iOS and Android.volume and isMuted fields in GCKMediaStatus serialization.Add customData support for Google Cast media loading by @Copilot in #67
Full Changelog: v1.4.3...v1.4.4
customData in loadMedia requests on Android and iOS native load request builders.customData in Android queueLoadItems options payload.customData (sender -> receiver) for app-specific header/auth handling.customData and applying it in your receiver network pipeline.fix(ios): forward all GoogleCastOptions fields to native + fallback language for subtitle tracks by @Copilot in #64
Full Changelog: v1.4.2...v1.4.3
IOSGoogleCastOptions so all base GoogleCastOptions fields can be configured and are forwarded through super parameters.
stopCastingOnAppTerminated was exposed in the iOS constructor.suspendSessionsWhenBackgrounded, physicalVolumeButtonsWillControlDeviceVolume, and disableDiscoveryAutostart are now settable and correctly propagated.CastOptionsExtensions.fromMap() to apply all parsed options to GCKCastOptions instead of silently dropping most fields.
suspendSessionsWhenBackgrounded, disableDiscoveryAutostart, disableAnalyticsLogging, stopReceiverApplicationWhenEndingSession, and startDiscoveryAfterFirstTapOnCastButton.GCKMediaTrack requires a non-nil languageCode for text tracks..text tracks only, nil/empty language now falls back to "und" (ISO 639-2 undetermined) to ensure subtitle tracks render on the receiver.test/models/ios_cast_options_test.dart with unit coverage for IOSGoogleCastOptions.toMap():
Feature/gh page by @felnanuke2 in #59
Full Changelog: v1.4.1...v1.4.2
Feat/add stop cast when app killed by @felnanuke2 in #58
Full Changelog: v1.3.1...v1.4.1
stopCastingOnAppTerminated option to automatically stop casting and end the session when the app is killed/terminated
IOSGoogleCastOptions and GoogleCastOptionsAndroidfalse (casting continues after app is closed, maintaining previous behavior)endSessionAndStopCasting(true)ActivityLifecycleCallbacks to monitor activity destruction and properly end cast sessionsstopCastingOnAppTerminatedFix Spm Configuration by @felnanuke2 in #56
import Flutter statements to all method channel Swift files@objc(GoogleCastPlugin) attribute to expose Swift plugin class with correct name for Flutter's plugin registrantAdd Swift Package Manager support and update iOS deployment target to… by @felnanuke2 in #55
Full Changelog: v1.2.9...v1.3.0
Package.swift manifest with SRGSSR/google-cast-sdk dependencyRemove deprecated contentID by @CaoGiaHieu-dev in #51
Full Changelog: v1.2.8...v1.2.9
GCKMediaInformationBuilder(contentURL:) instead of deprecated contentID to align with current Google Cast SDK and fix media load failures (including HLS) on iOS.Hardened iOS media parsing to avoid crashes from missing/invalid metadata; fromMap now bails out safely and treats infinite/NaN durations as zero.
fromMap now bails out safely and treats infinite/NaN durations as zero.startAbsoluteTime, and correctly propagating playPosition, startTime, and preloadTime values.Full Changelog: https://github.com/felnanuke2/flutter_google_cast/compare/v1.2.7...v1.2.8
Nothing published for this version
iOS Simulator Module Resolution: Fixed "Module 'flutter_chrome_cast' not found" parse error that occurred during iOS simulator builds
DEFINES_MODULE=YES to podspec for proper Swift module header generationENABLE_TESTING_SEARCH_PATHS=YES to improve module resolution during simulator compilationMissing Audio Control: Added missing stop method for audio control in remote casting client
stop method for audio control in remote casting client
google-cast-sdk-no-bluetooth to standard google-cast-sdk ~> 4.7No public API breaking changes. This release contains internal fixes and example updates.
android_remote_media_client_method_channel.dart to address method channel behavior when loading single media items.example/lib/main.dart and example/android/app/build.gradle to keep the sample project in sync with the plugin changes.pubspec.yaml to reflect dependency/metadata housekeeping.iOS Teardown Safety: Safely teardown Google Cast listeners on iOS to avoid a crash when the app terminates.
Cross-Platform Repeat Mode Fix: Fixed repeat mode handling across Android and iOS platforms
Expanded API Documentation: Added comprehensive documentation for public members across all Dart classes
No Breaking Changes: This is a safe update with no breaking API changes.
public_member_api_docs lint to enforce documentation for all public members.Perfect Pana Score: Achieved 160/160 points in package analysis
pubspec.yaml, README.md, CHANGELOG.md, and OSI-approved BSD-3-Clause licensedart format to ensure consistent code style across all filesEnum Naming Convention Update: All enums have been updated from UPPER_SNAKE_CASE to lowerCamelCase for better Dart conventions
GoogleCastConnectState.ConnectionStateConnected → GoogleCastConnectState.connectedCastMediaStreamType.BUFFERED → CastMediaStreamType.bufferedTrackType.TEXT → TrackType.textTextTrackType.SUBTITLES → TextTrackType.subtitlesRFC5646_LANGUAGE → Rfc5646LanguageExpandedGoogleCastPlayerThemeExpandedGoogleCastPlayerTexts for customizable text contentmarquee package dependency for scrolling textcustomizable_texts_example.dart and documentationCUSTOMIZABLE_TEXTS.md with usage examplesIf you're upgrading from previous versions, you'll need to update enum usage:
// Before
GoogleCastConnectState.ConnectionStateConnected
CastMediaStreamType.BUFFERED
TrackType.TEXT
// After
GoogleCastConnectState.connected
CastMediaStreamType.buffered
TrackType.text
Improved README.md with better documentation and examples
Update README example to use fully qualified provider class name for Android manifest integration
Update plugin to support Flutter v3.24.3.
fix issue on that crash app when session is disconnected
Now supports Flutter 3.22.0, thanks to contributions from fmsidoe.
fix /android/app/src/main/AndroidManifest.xml and add `xml `
fix /android/app/src/main/AndroidManifest.xml and add
<meta-data
android:name=
"com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="com.felnanuke.google_cast.GoogleCastOptionsProvider" />
fix GoogleCastPlugin.m file
fix GoogleCastPlugin.m file
update package name in podpec
update package name in podpec
generate dart doc with dartdoc
generate dart doc with dartdoc
add repository to pubspec.yaml
add repository to pubspec.yaml
add license to pubspec.yaml
add license to pubspec.yaml
allow change subtitle tracks and audio tracks
allow change subtitle tracks and audio tracks
Your coding agent can read these notes before it upgrades. Set up the MCP server →