Persist the exploration, proposal, spec, design, tasks, and verify/archive reports produced during the multi-device EQ, alarm-countdown, and notification-visual-polish SDD cycles.
31 lines
1.6 KiB
Markdown
31 lines
1.6 KiB
Markdown
# Exploration: EQ Device Auto-Switch & Settings UX
|
|
|
|
## Bug: EQ doesn't auto-switch on device connect/disconnect
|
|
|
|
### Root Cause
|
|
`EstadoEcualizador.cargarPersistido()` never calls `obtenerDispositivoActual()` at startup. `_dispositivoActualId` stays `null`, so `_resolverPresetActivo()` always returns `_presetPrincipal` (device preset never applied) until the next physical connect/disconnect event.
|
|
|
|
### What works correctly
|
|
Once `_dispositivoActualId` is set (via a stream event), `_onDispositivoCambiado()` correctly: sets ID, bootstraps first-seen device, re-resolves 4-level hierarchy, applies preset, notifies listeners.
|
|
|
|
### Fix
|
|
Call `obtenerDispositivoActual()` in `cargarPersistido()` after `_configurarSuscripcionDispositivo()` to seed initial device ID.
|
|
|
|
## Feature: Settings Device List Improvements
|
|
|
|
### Current state
|
|
`_SeccionEcualizadorAvanzado` shows raw device IDs (`bt_a2dp:AA:BB:CC`) + preset name. No connection indicator, no renaming, no EQ editing.
|
|
|
|
### Needed
|
|
1. Connection status indicator (green dot if `entry.key == eq.dispositivoActualId`)
|
|
2. Device custom name storage (`eq_nombres_dispositivos_v1` SP key)
|
|
3. Display name fallback: `customName ?? platformName (non-empty) ?? deviceId`
|
|
4. Modal bottom sheet for device editing: rename TextField + EcualizadorWidget
|
|
5. Follows existing modal pattern: `showModalBottomSheet(showDragHandle: true, isScrollControlled: true)`
|
|
|
|
## Affected Files
|
|
- `lib/estado/estado_ecualizador.dart` — fix init + rename API
|
|
- `lib/servicios/servicio_ecualizador.dart` — new SP key for names
|
|
- `lib/pantallas/pantalla_ajustes.dart` — rewrite device section + new modal
|
|
- Tests for all changes
|