fix(chrome): rebuild MiniReproductor as a full-bleed opaque bar with art

Item 22 / audit 3.6 (t4:184-188): the mini player was a floating
999-radius glass pill with no artwork. Replace it with a 60px opaque
bar (listSurface at .97 alpha), full-bleed edge to edge, showing the
station's square 42x42 artwork instead of the abstract playing-bars
indicator. app.dart no longer wraps the bar in the balloon nav's own
8px side margin, so it now spans the full width.

MiniReproductor.altura is re-measured (72 -> 60) now that the bar's
content height is fixed by construction; PluriLayout.bottomChromeInset
derives from it as before. Both the S3-R3 configurarLocalizaciones
guard and the altura measurement test still pass unmodified.
This commit is contained in:
2026-07-30 10:38:59 +02:00
parent 2b28c4daed
commit 4537497e83
4 changed files with 386 additions and 170 deletions
+15 -18
View File
@@ -194,16 +194,12 @@ void main() {
semantics.dispose();
});
testWidgets('every tab meets the 48x48dp minimum tap target', (
tester,
) async {
testWidgets('every tab meets the 48x48dp minimum tap target', (tester) async {
await tester.pumpWidget(hostFor(0));
await tester.pump();
for (var i = 0; i < items.length; i++) {
final size = tester.getSize(
find.byKey(PluriBottomNavigation.itemKey(i)),
);
final size = tester.getSize(find.byKey(PluriBottomNavigation.itemKey(i)));
expect(size.width, greaterThanOrEqualTo(48));
expect(size.height, greaterThanOrEqualTo(48));
}
@@ -248,22 +244,23 @@ void main() {
bottomNavigationBar: SafeArea(
key: chromeKey,
top: false,
minimum: const EdgeInsets.only(
bottom: PluriLayout.compactGap,
),
child: Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const MiniReproductor(),
PluriBottomNavigation(
minimum: const EdgeInsets.only(bottom: PluriLayout.compactGap),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// Mirrors app.dart's real composition: item 22 / audit
// 3.6 made MiniReproductor full-bleed, so only
// PluriBottomNavigation keeps the 8px side margin.
const MiniReproductor(),
Padding(
padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
child: PluriBottomNavigation(
items: items,
selectedIndex: 0,
onSelected: (_) {},
),
],
),
),
],
),
),
),