fix(alarma-sonando): date line, additive snooze qualifier
Audit 9.4 (t4:419): "Lunes, 3 de agosto" now renders between the schedule pill and the hero time -- purely additive, a new sibling Text touching neither element. New formato_fechas.dart helper fechaLargaConDiaSemana (locale-aware via DateFormat.MMMMEEEEd). Audit 9.10 (t4:433): the highlighted snooze tile gains a "usual" qualifier (new ARB key alarmSnoozeUsualLabel) alongside the original flat label -- resolved DIFFERENTLY than its sibling 9.9 (permanently rejected, id 2525): instead of splitting the flat alarmSnoozeOptionLabel string into two differently-sized Text nodes (which would make it vanish from the render tree the protected dismiss-guard test locates via find.text), a SEPARATE small Text is added alongside it. The original label stays a single, untouched Text node, still inside the same FilledButton the guard taps. Verified against the full ringing-screen test surface (34 tests across 5 files, including the protected dismiss-guard file) -- all green, dismiss-guard file reconfirmed byte-identical to main.
This commit is contained in:
@@ -225,6 +225,25 @@ class _PantallaAlarmaSonandoState extends State<PantallaAlarmaSonando> {
|
||||
tokens: tokens,
|
||||
),
|
||||
const SizedBox(height: 22),
|
||||
// Audit 9.4 (t4 line 419): "Lunes, 3 de agosto" between
|
||||
// the pill and the hero time -- never rendered before.
|
||||
// Purely additive: a new sibling Text, touching neither
|
||||
// the pill above nor the hero time below.
|
||||
Text(
|
||||
fechaLargaConDiaSemana(
|
||||
Localizations.localeOf(context).toString(),
|
||||
DateTime.now(),
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Theme.of(
|
||||
context,
|
||||
).colorScheme.onSurface.withValues(alpha: 0.6),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 6),
|
||||
FittedBox(
|
||||
fit: BoxFit.scaleDown,
|
||||
child: Text(
|
||||
@@ -689,6 +708,20 @@ class _FilaSnoozeFija extends StatelessWidget {
|
||||
final forma = RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(tokens.radiusMd),
|
||||
);
|
||||
// Audit 9.10 (t4 line 433): the prototype stacks a big NUMBER over a
|
||||
// small "min · habitual" unit — the SAME text-splitting conflict as
|
||||
// 9.9 (permanently rejected, Engram id 2525): this flat string is
|
||||
// exactly what the protected dismiss-guard test locates via
|
||||
// `find.text(l10n.alarmSnoozeOptionLabel(N))` in four places, and
|
||||
// splitting it into two differently-styled Text nodes would make
|
||||
// that flat value vanish from the render tree.
|
||||
//
|
||||
// Resolved differently here than 9.9: rather than splitting THIS
|
||||
// string, an entirely SEPARATE small qualifier Text is added
|
||||
// alongside it (only on the destacado tile) — the original flat
|
||||
// label stays a single, untouched, unstyled-differently Text node,
|
||||
// still the exact widget the guard finds and taps. This delivers
|
||||
// the "habitual" qualifier without the conflict 9.9 hit.
|
||||
final etiqueta = Text(l10n.alarmSnoozeOptionLabel(minutos));
|
||||
return Expanded(
|
||||
flex: esDestacado ? 3 : 2,
|
||||
@@ -703,7 +736,21 @@ class _FilaSnoozeFija extends StatelessWidget {
|
||||
foregroundColor: tokens.deepViolet,
|
||||
shape: forma,
|
||||
),
|
||||
child: etiqueta,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
etiqueta,
|
||||
Text(
|
||||
l10n.alarmSnoozeUsualLabel,
|
||||
style: TextStyle(
|
||||
fontSize: 11,
|
||||
fontWeight: FontWeight.w800,
|
||||
color: tokens.deepViolet.withValues(alpha: 0.75),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: OutlinedButton(
|
||||
onPressed: () => onPosponer(minutos),
|
||||
|
||||
Reference in New Issue
Block a user