📱 Description & Context
Currently, navigating to the "System Ringtones" tab on an iOS device results in a completely blank screen. There is no loading indicator, no error message, and no UI feedback. To a user, this appears as a hard crash or a broken feature.
🔍 Root Cause Analysis
Unlike Android, which provides a public RingtoneManager API to easily fetch system notification sounds, iOS is highly sandboxed. Apple does not allow third-party applications to enumerate or access native system ringtones (e.g., "Radar", "Reflection").
Consequently, the native channel for system ringtones gracefully returns an empty list [] when executed on iOS. However, the UI layer in ringtone_selection_page.dart does not handle this expected empty state for iOS, causing it to render an empty view instead of a helpful fallback.
⚠️ Impact on User Experience
As the project pushes towards "iOS Readiness", silent UX failures like this break user trust. An alarm clock is mission-critical; a blank screen makes the app feel broken and unreliable.
✨ Expected Behavior
The UI should proactively check the platform. If the app is running on iOS, the _buildSystemRingtonesTab() should intercept the build and display a centralized, theme-aware message: "System ringtones are currently only supported on Android. Please upload a custom ringtone to use this feature."
🔄 Steps to Reproduce
- Run the application on an iOS simulator or physical device.
- Navigate to Add/Update Alarm.
- Tap on "Choose Ringtone".
- Select the "System Ringtones" tab.
- Observe the blank screen.
📱 Description & Context
Currently, navigating to the "System Ringtones" tab on an iOS device results in a completely blank screen. There is no loading indicator, no error message, and no UI feedback. To a user, this appears as a hard crash or a broken feature.
🔍 Root Cause Analysis
Unlike Android, which provides a public
RingtoneManagerAPI to easily fetch system notification sounds, iOS is highly sandboxed. Apple does not allow third-party applications to enumerate or access native system ringtones (e.g., "Radar", "Reflection").Consequently, the native channel for system ringtones gracefully returns an empty list
[]when executed on iOS. However, the UI layer inringtone_selection_page.dartdoes not handle this expected empty state for iOS, causing it to render an empty view instead of a helpful fallback.As the project pushes towards "iOS Readiness", silent UX failures like this break user trust. An alarm clock is mission-critical; a blank screen makes the app feel broken and unreliable.
✨ Expected Behavior
The UI should proactively check the platform. If the app is running on iOS, the
_buildSystemRingtonesTab()should intercept the build and display a centralized, theme-aware message: "System ringtones are currently only supported on Android. Please upload a custom ringtone to use this feature."🔄 Steps to Reproduce