flutter_chrome_cast
A Flutter plugin for integrating Google Cast devices. Discover, connect, and control media playback on Chromecast and Cast-enabled devices.
1.4.8
6.8K downloads/mo
#3453 most downloaded on pub.dev
felnanuke2/flutter_google_cast
What this package is like to depend on
Last release 6 days ago
17 Aug 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 32 of 33 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
33 releases · first in 2023
16 releases in the last 12 months
see the full history below
Release timeline
33 releases · Apr 2023 to Aug 2026Releases
latest 33-
1.4.817 Aug 2026Release notes
Open source →What's Changed
- iOS content id fix by @AlexSeednov in #74
- fix(android): forward HLS segment format + stream duration to MediaInfo by @wickloww in #78
- fix(ios): use canonical Cast metadata keys for title and subtitle by @a1rwulf in #83
- support for arm64 architecture on iOS by @Heatclift in #80
- iOS position fix by @AlexSeednov in #75
- fix(ios): map all standard metadata keys to canonical Cast keys by @felnanuke2 in #84
New Contributors
- @wickloww made their first contribution in #78
- @a1rwulf made their first contribution in #83
- @Heatclift made their first contribution in #80
Full Changelog: v1.4.6...v1.4.8
Release notes
Open source →🐛 Bug Fixes
- iOS stale playback position after
loadMedia: FixedplayerPositionbriefly showing the previous content's offset right after switching media. Position ticks are now suppressed until the SDK reports a newmediaSessionIDandapproximateStreamPosition()converges to the requested start time (±5 s tolerance), with a 10 s safety timeout. - iOS media metadata not shown on receiver (#83):
GCKMediaMetadataentries 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. - iOS standard metadata keys mapped to canonical Cast keys (#84): Extended the canonical key mapping to all standard fields — artist, albumArtist, albumName, composer, studio, seriesTitle, season, episode, trackNumber, discNumber, location, latitude, longitude, width and height — and accept
creationDateTimeso photo metadata creation dates are no longer dropped. - Android HLS streams stuck in LOADING (#78): Android ignored
hlsSegmentFormat/hlsVideoSegmentFormat(already handled on iOS), leaving fragmented-MP4 HLS streams stuck loading on the Default Media Receiver. Both fields are now forwarded toMediaInfo, and stream duration is converted from seconds to milliseconds. - iOS empty
contentIDin media status: The contentID passed from Flutter is now applied toGCKMediaInformationBuilderon load, and cached so it can be substituted into media status updates when the Default Media Receiver does not echo it back. Falls back tocontentURLwhen no contentID is available at all, matching Android behaviour.
🔧 Notes
- No public API changes.
-
1.4.623 Apr 2026Release notes
Open source →Release notes
Open source →New Features
- Added
resetSession()to force a clean iOS Cast session reset after interrupted or stuck connections.
Bug Fixes
- Fixed an iOS crash when the discovered device list changed during connection.
Notes
- No other public API changes.
- Added
-
1.4.507 Apr 2026Release notes
Open source →Release notes
Open source →🐛 Bug Fixes
- iOS playback rate: Fixed
setPlaybackRatehaving no effect on iOS — the method channel handler was missing, so calls from Dart were silently ignored. - iOS session state transitions: Fixed
disconnectingstate being skipped on the Dart side when a Cast session ends. - iOS session event deduplication: Fixed duplicate session state events firing in rapid succession.
- iOS data-only callbacks: Fixed spurious session state events triggered by device info, volume, and status updates.
- Method channel results: Fixed
endSession,endSessionAndStopCasting, andsetStreamVolumenot completing their Flutter result callbacks on iOS and Android. - iOS media status fields: Fixed missing
volumeandisMutedfields inGCKMediaStatusserialization.
🔧 Notes
- No public API changes
- iOS playback rate: Fixed
-
1.4.429 Mar 2026Release notes
Open source →What's Changed
- Add customData support for Google Cast media loading by @Copilot in #67
Full Changelog: v1.4.3...v1.4.4
Release notes
Open source →✨ New Features
- Added support for passing
customDatainloadMediarequests on Android and iOS native load request builders. - Added support for forwarding
customDatain AndroidqueueLoadItemsoptions payload.
📚 Documentation
- Added README guidance for custom HTTP header scenarios where Google Cast SDK does not provide standard direct header control.
- Documented the recommended Custom Web Receiver approach using
customData(sender -> receiver) for app-specific header/auth handling. - Added official Google Cast documentation links for creating and registering a Custom Receiver.
🔧 Notes
- For custom header requirements, implement the logic on your Custom Receiver side by consuming
customDataand applying it in your receiver network pipeline.
-
1.4.326 Mar 2026Release notes
Open source →What's Changed
- fix(ios): forward all GoogleCastOptions fields to native + fallback language for subtitle tracks by @Copilot in #64
New Contributors
- @Copilot made their first contribution in #64
Full Changelog: v1.4.2...v1.4.3
Release notes
Open source →🐛 Bug Fixes
- iOS options forwarding: Fixed
IOSGoogleCastOptionsso all baseGoogleCastOptionsfields can be configured and are forwarded throughsuperparameters.- Previously, only
stopCastingOnAppTerminatedwas exposed in the iOS constructor. - Options such as
suspendSessionsWhenBackgrounded,physicalVolumeButtonsWillControlDeviceVolume, anddisableDiscoveryAutostartare now settable and correctly propagated.
- Previously, only
- Native iOS Cast options mapping: Fixed
CastOptionsExtensions.fromMap()to apply all parsed options toGCKCastOptionsinstead of silently dropping most fields.- Added guards to map
suspendSessionsWhenBackgrounded,disableDiscoveryAutostart,disableAnalyticsLogging,stopReceiverApplicationWhenEndingSession, andstartDiscoveryAfterFirstTapOnCastButton.
- Added guards to map
- Subtitle/caption language fallback: Fixed text track creation on iOS when subtitle language is missing.
GCKMediaTrackrequires a non-nillanguageCodefor text tracks.- For
.texttracks only, nil/empty language now falls back to"und"(ISO 639-2 undetermined) to ensure subtitle tracks render on the receiver.
🧪 Tests
- Added
test/models/ios_cast_options_test.dartwith unit coverage forIOSGoogleCastOptions.toMap():- default values,
- individually configurable fields,
- type hierarchy behavior,
- namespace-based discovery criteria serialization.
-
1.4.223 Mar 2026Release notes
Open source →What's Changed
- Feature/gh page by @felnanuke2 in #59
- Fix unstable iOS cast discovery by @AlexSeednov in #60
New Contributors
- @AlexSeednov made their first contribution in #60
Full Changelog: v1.4.1...v1.4.2
Release notes
Open source →🐛 Bug Fixes
- iOS Cast Discovery Stability: Fixed unreliable Cast device discovery on iOS
- Added proper handling for discovery method channel calls on iOS
- Improved discovery lifecycle handling between background and foreground states
🔧 Notes
- No public API changes
-
1.4.110 Feb 2026Release notes
Open source →What's Changed
- Feat/add stop cast when app killed by @felnanuke2 in #58
- Enable liveSeekableRange values by @mittsu333 in #57
New Contributors
- @mittsu333 made their first contribution in #57
Full Changelog: v1.3.1...v1.4.1
Release notes
Open source →✨ New Features
- Stop Casting on App Kill: Added
stopCastingOnAppTerminatedoption to automatically stop casting and end the session when the app is killed/terminated- Available on both iOS and Android platforms
- Configurable via
IOSGoogleCastOptionsandGoogleCastOptionsAndroid - When enabled, the Chromecast device stops playing when the user closes the app
- Default is
false(casting continues after app is closed, maintaining previous behavior)
🔧 Platform Improvements
- iOS: Added lifecycle observer to detect app termination and end cast session with
endSessionAndStopCasting(true) - Android: Implemented
ActivityLifecycleCallbacksto monitor activity destruction and properly end cast sessions
📚 Documentation
- Updated README with configuration options table
- Added code examples for both iOS and Android showing how to enable
stopCastingOnAppTerminated
-
1.3.103 Feb 2026Release notes
Open source →Release notes
Open source →🐛 Bug Fixes
- SPM Build Fixes: Fixed Swift compiler errors when building with Swift Package Manager
- Added missing
import Flutterstatements to all method channel Swift files - Added
@objc(GoogleCastPlugin)attribute to expose Swift plugin class with correct name for Flutter's plugin registrant - Fixes "Cannot find type 'FlutterPlugin' in scope" and related compiler errors
- Fixes "Unknown receiver 'GoogleCastPlugin'" error in GeneratedPluginRegistrant.m
- Added missing
🔧 Notes
- SPM support now fully functional for iOS builds
- No breaking API changes
- SPM Build Fixes: Fixed Swift compiler errors when building with Swift Package Manager
-
1.3.003 Feb 2026Release notes
Open source →What's Changed
- Add Swift Package Manager support and update iOS deployment target to… by @felnanuke2 in #55
Full Changelog: v1.2.9...v1.3.0
Release notes
Open source →✨ New Features
- Swift Package Manager (SPM) Support: Added full SPM support for iOS
- Added
Package.swiftmanifest with SRGSSR/google-cast-sdk dependency - Plugin now supports both CocoaPods and SPM for iOS dependency management
- Resolves pub.dev scoring requirement for SPM support
- Added
🔧 Platform Changes
- iOS Deployment Target: Updated minimum iOS version from 14.0 to 15.0 (required by GoogleCast SPM package)
📚 Documentation
- Updated README with SPM usage instructions
- Added SPM documentation to podspec
-
1.2.906 Jan 2026Release notes
Open source →What's Changed
- Remove deprecated contentID by @CaoGiaHieu-dev in #51
- Releease 1.2.9 by @felnanuke2 in #52
New Contributors
- @CaoGiaHieu-dev made their first contribution in #51
Full Changelog: v1.2.8...v1.2.9
Release notes
Open source →🐛 Fixes
- Use
GCKMediaInformationBuilder(contentURL:)instead of deprecatedcontentIDto align with current Google Cast SDK and fix media load failures (including HLS) on iOS.
-
1.2.824 Dec 2025Release notes
Open source →🐛 Fixes
- Hardened iOS media parsing to avoid crashes from missing/invalid metadata;
fromMapnow bails out safely and treats infinite/NaN durations as zero. - Improved HLS playback support by mapping segment formats, honoring
startAbsoluteTime, and correctly propagatingplayPosition,startTime, andpreloadTimevalues. - Queue load options now respect fractional play positions, keeping live and buffered streams in sync.
🧭 UX
- Tweaked expanded player and mini controller behavior for live streams (slider, play/pause), improving control feedback during HLS playback.
Full Changelog: https://github.com/felnanuke2/flutter_google_cast/compare/v1.2.7...v1.2.8
- Hardened iOS media parsing to avoid crashes from missing/invalid metadata;
-
1.2.715 Dec 2025Nothing published for this version
-
1.2.620 Nov 2025Release notes
Open source →🐛 Bug Fixes
- iOS Simulator Module Resolution: Fixed "Module 'flutter_chrome_cast' not found" parse error that occurred during iOS simulator builds
- Issue affected only simulator builds; device builds and IPA generation worked correctly
- Added
DEFINES_MODULE=YESto podspec for proper Swift module header generation - Added
ENABLE_TESTING_SEARCH_PATHS=YESto improve module resolution during simulator compilation - Updated Google Cast SDK to ~> 4.8
- Maintains full compatibility with static framework linking for transitive Google Cast SDK dependencies
🔧 Notes
- No public API changes. This release focuses on build system compatibility for iOS simulator builds
- Resolves issue #XX where users encountered "Module not found" errors on some machines while others were unaffected
- iOS Simulator Module Resolution: Fixed "Module 'flutter_chrome_cast' not found" parse error that occurred during iOS simulator builds
-
1.2.512 Oct 2025Release notes
Open source →✨ New Features
- Missing Audio Control: Added missing
stopmethod for audio control in remote casting client- Implements the stop functionality that was previously missing from the Android remote media client
- Fix contributed via PR #40 by @abdulmajedkhan
🔧 Platform Improvements
- Apple Silicon Support: Added full support for Apple Silicon (M1/M2/M3) Mac simulators
- Updated Google Cast SDK dependency from
google-cast-sdk-no-bluetoothto standardgoogle-cast-sdk~> 4.7 - Removed arm64 simulator architecture exclusions that prevented builds on Apple Silicon
- Fixes contributed via PR #39 by @SVyatoslavG and @nsikaktradearies
- Updated Google Cast SDK dependency from
- iOS Deployment Target: Bumped minimum iOS deployment target to 13.0 to align with modern platform requirements
- Enhanced Logging: Improved debug logging capabilities with conditional debug print statements
🚀 Performance & Developer Experience
- Faster Plugin Initialization: Returns Flutter plugin result earlier during initialization for faster feedback
- Conditional Logging: Gated console logging behind debug flags to reduce noise in production builds
- Better Discovery: Enhanced device discovery initialization and lifecycle management
🔧 Technical Updates
- CocoaPods Integration: Updated CocoaPods and Xcode project metadata to reflect dependency changes
- Build System: Improved build phases and linker configuration for better compatibility
🔧 Notes
- No breaking API changes. This release focuses on platform compatibility and missing functionality
- Existing projects may need to update their iOS deployment target to 13.0 for optimal compatibility
- Missing Audio Control: Added missing
-
1.2.420 Sep 2025Release notes
Open source →🐛 Bug Fixes
- Android remote media client: Fixes in
android_remote_media_client_method_channel.dartto address method channel behavior when loading single media items. - Example fixes: Minor example app updates to
example/lib/main.dartandexample/android/app/build.gradleto keep the sample project in sync with the plugin changes. - Pubspec tidy: Updated
pubspec.yamlto reflect dependency/metadata housekeeping.
🔧 Notes
- No public API breaking changes. This release contains internal fixes and example updates.
- Android remote media client: Fixes in
-
1.2.308 Sep 2025Release notes
Open source →🐛 Bug Fixes
- iOS Teardown Safety: Safely teardown Google Cast listeners on iOS to avoid a crash when the app terminates.
- Fix merged via pull request #32: https://github.com/felnanuke2/flutter_google_cast/pull/32
🔧 Notes
- No public API changes. This is a small internal lifecycle fix for iOS listener teardown.
- iOS Teardown Safety: Safely teardown Google Cast listeners on iOS to avoid a crash when the app terminates.
-
1.2.207 Jul 2025Release notes
Open source →🐛 Bug Fixes
🐛 Bug Fixes
- Cross-Platform Repeat Mode Fix: Fixed repeat mode handling across Android and iOS platforms
- Android: Updated repeat mode parsing to use string-based values instead of integer mapping
- iOS: Fixed GCKMediaQueueLoadOptions repeat mode enum parsing to handle string values
- Dart: Enhanced GoogleCastMediaRepeatMode enum with proper string value mapping
- Consistency: Ensured consistent repeat mode behavior across all platforms
🔧 Code Improvements
- Removed Platform-Specific Code: Eliminated Android-specific repeat mode extensions for cleaner architecture
- Type Safety: Improved type safety in repeat mode handling with proper string-to-enum conversion
- Code Formatting: Applied consistent code formatting and styling improvements
- Cross-Platform Repeat Mode Fix: Fixed repeat mode handling across Android and iOS platforms
-
1.2.120 Jun 2025Release notes
Open source →📚 Documentation Enhancements
- Expanded API Documentation: Added comprehensive documentation for public members across all Dart classes
- Improved Public API Coverage: Enhanced doc comments for better IDE support and developer experience
- Coverage Badge: Added test coverage badge to track and display code coverage metrics
🧪 Testing Infrastructure
- Test Suite Initialization: Started implementing comprehensive test coverage for the application
- Testing Foundation: Established testing framework and initial test cases for core functionality
- Quality Assurance: Improved code reliability through systematic testing approach
🔧 Code Quality
- Documentation Standards: Ensured all public class members have proper documentation
- Code Coverage Tracking: Implemented coverage monitoring for better code quality insights
- Developer Experience: Enhanced IDE support with better API documentation
-
1.2.018 Jun 2025Release notes
Open source →📚 Documentation & API Improvements
- Extensive API Documentation: Added or improved doc comments for nearly all public classes, methods, enums, and fields across the codebase.
- Public API Coverage: Significantly increased public API documentation coverage for better IDE support and pub.dev health.
- README & Example Updates: Improved usage examples, customization guides, and documentation for easier integration.
- Linter Rule: Enabled
public_member_api_docslint to enforce documentation for all public members. - No Breaking Changes: This is a safe update with no breaking API changes.
🛠️ Internal & Quality
- Improved code comments and structure for maintainability.
- All previous features and fixes from 1.1.1 included.
-
1.1.117 Jun 2025Release notes
Open source →🏆 Quality Improvements
- Perfect Pana Score: Achieved 160/160 points in package analysis
- ✅ File Conventions (30/30): Valid
pubspec.yaml,README.md,CHANGELOG.md, and OSI-approved BSD-3-Clause license - ✅ Documentation (20/20): 31.5% of public API documented (above 20% requirement) with comprehensive example
- ✅ Platform Support (20/20): Full iOS and Android support
- ✅ Static Analysis (50/50): Zero errors, warnings, lints, or formatting issues
- ✅ Dependencies (40/40): All dependencies up-to-date and compatible with constraint lower bounds
- ✅ File Conventions (30/30): Valid
🔧 Technical Improvements
- Code Formatting: Applied
dart formatto ensure consistent code style across all files - Static Analysis: Resolved all linting and formatting issues for perfect static analysis score
- Dependency Compatibility: Verified compatibility with latest stable Dart and Flutter SDKs
- Package Health: Optimized for pub.dev publication with excellent package health metrics
📊 Package Metrics
- API Documentation Coverage: 234 out of 744 API elements documented (31.5%)
- Platform Coverage: iOS ✅ Android ✅
- License: BSD-3-Clause (OSI-approved)
- Dependencies: All current and compatible
- Static Analysis: Perfect score with zero issues
- Perfect Pana Score: Achieved 160/160 points in package analysis
-
1.0.317 Jun 2025Release notes
Open source →Breaking Changes
- Enum 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→Rfc5646Language- And many more enum updates across the codebase
Android Build System Modernization
- Gradle Update: Updated from 7.x to 8.4 for better compatibility
- Android Gradle Plugin: Updated from 7.x to 8.3.0
- Kotlin: Updated from 1.6.10 to 1.9.10
- Java Compatibility: Updated to Java 11
- Android SDK: Updated compile SDK to 35, target SDK to 34
- Dependencies: Updated Google Cast Framework (21.0.1 → 21.5.0), AndroidX libraries, and other Android dependencies
Enhanced UI/UX
- Completely Redesigned Mini Controller:
- Modern Material Design with floating card style
- Marquee text scrolling for long titles and subtitles
- Better visual hierarchy and improved touch targets
- Theme-aware styling with customizable colors and typography
- Enhanced Expanded Player:
- Drag-to-dismiss gesture support with smooth animations
- Better media image handling with fallbacks
- Improved controls layout with backdrop blur effects
- Caption/subtitle track selection
- Seek forward/backward 30 seconds functionality
- Volume control integration
- Theme Support: Added comprehensive theming with
ExpandedGoogleCastPlayerTheme - Internationalization: Added
ExpandedGoogleCastPlayerTextsfor customizable text content
Bug Fixes
- Device Discovery: Fixed duplicate device detection in Android discovery manager
- Error Handling: Improved error handling and removed debug print statements
- Import Issues: Fixed missing imports and dependency issues
- Memory Leaks: Better disposal of animation controllers and stream subscriptions
- UI Stability: Fixed various layout and rendering issues
New Features
- Marquee Text Support: Added
marqueepackage dependency for scrolling text - Customizable Texts: Complete internationalization support with example
- Advanced Theming: Comprehensive theme customization options
- Better Examples: Added
customizable_texts_example.dartand documentation - Enhanced Documentation: Added
CUSTOMIZABLE_TEXTS.mdwith usage examples
Developer Experience
- Improved Code Quality: Better type safety, null safety compliance
- Documentation: Enhanced inline documentation and examples
- File Organization: Better separation of concerns and cleaner imports
Migration Guide
If 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 - Enum Naming Convention Update: All enums have been updated from UPPER_SNAKE_CASE to lowerCamelCase for better Dart conventions
-
1.0.204 Jun 2025Release notes
Open source →- Improved README.md with better documentation and examples
- Enhanced setup instructions and usage guidelines
- Updated documentation formatting and clarity
-
1.0.104 Jun 2025Release notes
Open source →- Update README example to use fully qualified provider class name for Android manifest integration
- Clarify the android:value meta-data entry with complete package path to prevent ambiguity when registering the options provider
-
1.0.030 May 2025Release notes
Open source →- Update plugin to support Flutter v3.24.3.
- Bump version and update dependency versions in pubspec.yaml.
- Update SDK constraints in both main and example pubspec files for compatibility with latest Flutter.
- Add conditional namespace configuration in android/build.gradle for compatibility with the latest Gradle and Android Studio.
-
0.0.1123 Jan 2025Release notes
Open source →- fix issue on that crash app when session is disconnected
- add to doc and example new properties required to work on android api 34+
-
0.0.1018 Jun 2024 -
0.0.905 Jun 2023Release notes
Open source →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" /> -
0.0.826 Apr 2023 -
0.0.726 Apr 2023 -
0.0.625 Apr 2023 -
0.0.525 Apr 2023 -
0.0.425 Apr 2023 -
0.0.325 Apr 2023