_restaurarVolumenMediaUnaVez() read the BuildContext to reach the alarm port, but dispose() runs after the element is defunct, so the lookup always threw (caught and logged) and the dispose safety-net never actually restored the media volume when it was the sole exit path. The state is now captured once in initState and the restore helper uses the field. Adds the missing dispose-as-sole-caller regression test.