Área: Navegación / Scroll
Severidad: Media
Puntaje actual: 7/10 | Potencial: 10/10
---
Síntoma
Clickear el tab Home no resetea la posición de scroll si ya estás en Home. CanvasKit mantiene el offset de scroll entre navegaciones. Las pruebas secuenciales de secciones fallan por acumulación de scroll drift de ~300px por sección.
Evidencia
eval-sections.mjs — Scroll drift measurements:
Classicism: expected=1800px actual=2100px (300px drift)
Romanticism: expected=2700px actual=3000px (300px drift)
Minimalism: expected=3300px actual=NOT FOUND
Party Music: expected=4200px actual=NOT FOUND
Sections found: 10/12
Missing: Minimalism, Party Music (últimas secciones, inalcanzables por drift acumulado)
eval-coverage.mjs — Scrolling with goHome+scroll vs accumulated:
Scroll acumulado unidireccional: 12/12 secciones encontradas
goHome + scrollStep entre secciones: View All no encontrado para Classicism, Romanticism
Impacto
Factor | Detalle --------|--------- Testing | Workaround necesario: navegar a otro tab antes de volver a Home. Añade ~2s por prueba Usuario | Si ve una sección, navega a Favorites y vuelve a Home, espera ver el inicio pero ve la posición anterior Últimas secciones | Minimalism y Party Music son inalcanzables en testing secuencial Consistencia | Comportamiento no determinista: a veces resetea, a veces no Causa raíz
El handler del tap en Home tab probablemente hace:
// Solo navega si NO está en Home
if (currentTab != Tab.home) {
setState(() => currentTab = Tab.home);
scrollController.jumpTo(0);
}
// Si ya está en Home, no hace nada
Debería resetear el scroll siempre, incluso si ya está activo.
Reproducción
export DISPLAY=:99
cd /home/admin/fluttwebfaris
node eval-sections.mjs
# Observar drift de 300px por sección
Fix sugerido (Flutter)
onTap: () {
if (currentTab == Tab.home) {
scrollController.animateTo(0, duration: Duration(milliseconds: 200));
} else {
setState(() => currentTab = Tab.home);
}
}
Tiempo estimado de fix
0.5-1h
Referencias
•
eval-sections.mjs — Section scroll detection•
eval-coverage.mjs — Scroll behavior comparison•
NOTAS-ERRORES.md línea 7-21