output_route_selector 1.1.2
output_route_selector: ^1.1.2 copied to clipboard
A Flutter plugin to select audio output routes (speaker, receiver, bluetooth, wired headset) on iOS and Android.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.1.2 - 2026-01-19 #
Fixed #
- Android: Fixed "background can not be translucent" error in MediaRouteChooserDialog
1.1.1 - 2026-01-19 #
Fixed #
- iOS: Event now reports the ACTUAL active audio device after route change, not the requested one
- Fixed issue where selecting receiver could switch to Bluetooth but event reported receiver
1.1.0 - 2026-01-19 #
Added #
- Android support! Full audio output selection on Android
- MediaRouteChooserDialog for native Android audio output selection
- Bluetooth, speaker, receiver, and wired headset support on Android
- PlatformView implementation for Android (same API as iOS)
Changed #
- Updated description to include Android support
1.0.8 - 2026-01-19 #
Fixed #
- Event now fires only after successful route change from native menu
- Removed duplicate/unnecessary events (audioOutputsRefreshed)
- Events without activeDevice are now filtered out
- Single event per route change with AudioModel
1.0.7 - 2026-01-19 #
Changed #
- Simplified event stream: now returns
AudioModel?instead ofAudioRouteChangeEvent - Removed
AudioRouteChangeEventclass - no longer needed - Stream filters out null events automatically
- Cleaner API: just get the active device directly
1.0.6 - 2026-01-19 #
Changed #
OutputRouteSelectornow uses singleton pattern:OutputRouteSelector.instance- Updated API:
OutputRouteSelector.instance.onAudioRouteChanged
1.0.5 - 2026-01-19 #
Changed #
- Breaking: Removed
getAvailableAudioOutputs()andchangeAudioOutput()methods - All device management now handled natively via
AudioOutputSelectorwidget - Flutter only receives events via
onAudioRouteChangedstream - Simplified API - just add widget and listen to events
- Removed deprecated
AudioOutputSelectorLegacywidget - Cleaned up unused MethodChannel handlers
Improved #
- Simplified README with cleaner examples
- Better documentation
1.0.4 - 2026-01-19 #
1.0.3 - 2026-01-19 #
Added #
- Native PlatformView implementation for real UIMenu support
- System-style glass menu with SF Symbols icons and checkmarks
- Support for custom Flutter widgets as button icons (Icon, Image, AssetGenImage)
- Separate
widthandheightparameters, plussizeshorthand
Fixed #
- Added @available(iOS 14.0, *) annotation to support iOS 14.0+
- Fixed Logger availability issue
- Fixed UIMenu not opening (now uses real UIKit button with PlatformView)
Changed #
- Minimum iOS version set to 14.0
- AudioOutputSelector now uses transparent native button overlay for proper UIMenu presentation
- Improved topViewController detection for modal scenarios
1.0.1 - 2026-01-19 #
Fixed #
- Fixed native menu not appearing when tapping AudioOutputSelector widget
- Changed from UIMenu to UIAlertController for reliable menu presentation
- Added proper iPad support with popover positioning
1.0.0 - 2026-01-19 #
Added #
- Initial release
- iOS support for audio output route selection
- Support for Speaker, Receiver, Wired Headset, and Bluetooth devices
getAvailableAudioOutputs()method to get all available audio deviceschangeAudioOutput()method to switch between audio outputsonAudioRouteChangedstream to listen for real-time route changesAudioOutputSelectorwidget - Native iOS UIMenu widget for easy audio output selectionAudioModelclass with device informationAudioDeviceTypeenum for device typesAudioRouteChangeEventclass for route change notifications- Extension methods for user-friendly device names
- Automatic detection of route changes from Control Center, Dynamic Island, and device connect/disconnect
- Smart retry mechanism (3 attempts with increasing delays) to ensure route changes are properly detected
- Automatic refresh of outputs after every route change
- Native iOS menu with checkmarks for active devices
- Comprehensive error handling with PlatformException
- Full documentation and examples with event listening and widget usage