fix(eq): restore the prototype's band height and brand-teal fill
Audit 11.4 and 11.6: the band column was 152 instead of 280 (t4 line 581), leaving the sliders 46% short, and the fill read liveGreen -- the LIVE badge colour -- instead of brand teal (t4 line 585). Adds two guards. The existing tests only asserted the band COUNT, which is exactly why both values could drift unnoticed.
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import '../l10n/gen/app_localizations.dart';
|
import '../l10n/gen/app_localizations.dart';
|
||||||
import '../modelos/preset_ecualizador.dart';
|
import '../modelos/preset_ecualizador.dart';
|
||||||
import '../tema/pluriwave_theme.dart';
|
import '../tema/pluriwave_theme.dart';
|
||||||
|
import '../tema/pluriwave_tokens.dart';
|
||||||
import 'pluri_glass_surface.dart';
|
import 'pluri_glass_surface.dart';
|
||||||
|
|
||||||
class EcualizadorWidget extends StatefulWidget {
|
class EcualizadorWidget extends StatefulWidget {
|
||||||
@@ -87,7 +88,9 @@ class _EcualizadorWidgetState extends State<EcualizadorWidget> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 152,
|
// Audit 11.4: the prototype draws the band column at
|
||||||
|
// 280 (t4 line 581); 152 left the sliders 46% short.
|
||||||
|
height: 280,
|
||||||
child: Semantics(
|
child: Semantics(
|
||||||
slider: true,
|
slider: true,
|
||||||
enabled: widget.habilitado,
|
enabled: widget.habilitado,
|
||||||
@@ -100,13 +103,16 @@ class _EcualizadorWidgetState extends State<EcualizadorWidget> {
|
|||||||
child: SliderTheme(
|
child: SliderTheme(
|
||||||
data: SliderTheme.of(context).copyWith(
|
data: SliderTheme.of(context).copyWith(
|
||||||
trackHeight: 5,
|
trackHeight: 5,
|
||||||
activeTrackColor: tokens.liveGreen,
|
// Audit 11.6: the prototype's band fill is
|
||||||
thumbColor: tokens.liveGreen,
|
// brand teal (t4 line 585). `liveGreen` is
|
||||||
|
// the LIVE badge colour and reading it here
|
||||||
|
// put the sliders in the wrong colour family.
|
||||||
|
activeTrackColor: PluriWaveTokens.brand,
|
||||||
|
thumbColor: PluriWaveTokens.brand,
|
||||||
inactiveTrackColor:
|
inactiveTrackColor:
|
||||||
theme.colorScheme.surfaceContainerHighest,
|
theme.colorScheme.surfaceContainerHighest,
|
||||||
overlayColor: tokens.liveGreen.withValues(
|
overlayColor: PluriWaveTokens.brand
|
||||||
alpha: 0.15,
|
.withValues(alpha: 0.15),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
child: Slider(
|
child: Slider(
|
||||||
value: _bandas[i],
|
value: _bandas[i],
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:pluriwave/l10n/gen/app_localizations.dart';
|
import 'package:pluriwave/l10n/gen/app_localizations.dart';
|
||||||
import 'package:pluriwave/modelos/preset_ecualizador.dart';
|
import 'package:pluriwave/modelos/preset_ecualizador.dart';
|
||||||
|
import 'package:pluriwave/tema/pluriwave_tokens.dart';
|
||||||
import 'package:pluriwave/widgets/ecualizador_widget.dart';
|
import 'package:pluriwave/widgets/ecualizador_widget.dart';
|
||||||
|
|
||||||
/// WU13 task 13.1 — first-class regression guard (design ADR-5, spec
|
/// WU13 task 13.1 — first-class regression guard (design ADR-5, spec
|
||||||
@@ -92,4 +93,47 @@ void main() {
|
|||||||
expect(slider.onChanged, isNotNull);
|
expect(slider.onChanged, isNotNull);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Visual-fidelity guards (audit id 2521, items 11.4 and 11.6). These two
|
||||||
|
// values drifted silently once already: the whole point of the fidelity
|
||||||
|
// pass was that behavioural tests ("renders 5 sliders") never noticed the
|
||||||
|
// sliders were 46% too short and painted in the wrong colour family.
|
||||||
|
testWidgets('each band column is 280 tall, as the prototype draws it', (
|
||||||
|
tester,
|
||||||
|
) async {
|
||||||
|
await tester.pumpWidget(buildWidget());
|
||||||
|
|
||||||
|
final columnas = tester.widgetList<SizedBox>(
|
||||||
|
find.descendant(
|
||||||
|
of: find.byType(EcualizadorWidget),
|
||||||
|
matching: find.byType(SizedBox),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
columnas.where((c) => c.height == 280),
|
||||||
|
hasLength(5),
|
||||||
|
reason:
|
||||||
|
'prototype t4 line 581 sizes the band column at 280; 152 left the '
|
||||||
|
'sliders 46% short',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets('band fill uses the brand teal, not the LIVE-badge green', (
|
||||||
|
tester,
|
||||||
|
) async {
|
||||||
|
await tester.pumpWidget(buildWidget());
|
||||||
|
|
||||||
|
final tema = SliderTheme.of(tester.element(find.byType(Slider).first));
|
||||||
|
|
||||||
|
expect(tema.activeTrackColor, PluriWaveTokens.brand);
|
||||||
|
expect(tema.thumbColor, PluriWaveTokens.brand);
|
||||||
|
expect(
|
||||||
|
tema.activeTrackColor,
|
||||||
|
isNot(PluriWaveTokens.dark.liveGreen),
|
||||||
|
reason:
|
||||||
|
'liveGreen (#7EE4C2) is the LIVE badge colour; the prototype fills '
|
||||||
|
'EQ bands with brand teal #21D4D9 (t4 line 585)',
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user