fix(tv): keep sidebar transparent

This commit is contained in:
edde746
2026-06-14 14:53:56 +02:00
parent c404589382
commit d6487e24c9
3 changed files with 22 additions and 8 deletions
+1
View File
@@ -1570,6 +1570,7 @@ class _MainScreenState extends State<MainScreen>
child: Stack(
clipBehavior: Clip.hardEdge,
children: [
Positioned.fill(child: ColoredBox(color: Theme.of(context).scaffoldBackgroundColor)),
Positioned(
top: 0,
bottom: 0,
+1 -1
View File
@@ -644,7 +644,7 @@ class SideNavigationRailState extends State<SideNavigationRail> with MountedSetS
children: [
Positioned.fill(
child: AnimatedOpacity(
opacity: 1.0,
opacity: PlatformDetector.isTV() ? 0.0 : 1.0,
duration: t.normal,
curve: Curves.easeOutCubic,
child: ColoredBox(color: t.surface),
+20 -7
View File
@@ -64,6 +64,14 @@ BoxDecoration? _railItemDecoration(WidgetTester tester, Finder item) {
as BoxDecoration?;
}
AnimatedOpacity _railSurfaceOpacity(WidgetTester tester) {
return tester
.widgetList<AnimatedOpacity>(
find.descendant(of: find.byType(SideNavigationRail), matching: find.byType(AnimatedOpacity)),
)
.singleWhere((widget) => widget.child is ColoredBox);
}
Future<void> _pumpBasicRail(
WidgetTester tester, {
GlobalKey<SideNavigationRailState>? sideNavKey,
@@ -175,9 +183,19 @@ void main() {
find.descendant(of: selectedItem, matching: find.byType(Container)).first,
);
expect((selectedItemContainer.decoration as BoxDecoration?)?.color, isNull);
expect(_railSurfaceOpacity(tester).opacity, 0.0);
});
testWidgets('expanded TV rail draws an opaque surface', (tester) async {
testWidgets('closed non-TV rail keeps an opaque surface', (tester) async {
await _pumpBasicRail(tester);
final rail = find.descendant(of: find.byType(SideNavigationRail), matching: find.byType(AnimatedContainer)).first;
expect(tester.getSize(rail).width, SideNavigationRailState.collapsedWidth);
expect(_railSurfaceOpacity(tester).opacity, 1.0);
});
testWidgets('expanded TV rail keeps a transparent surface', (tester) async {
TvDetectionService.debugSetAppleTVOverride(true);
addTearDown(() => TvDetectionService.debugSetAppleTVOverride(null));
await SettingsService.getInstance();
@@ -222,12 +240,7 @@ void main() {
final rail = find.descendant(of: find.byType(SideNavigationRail), matching: find.byType(AnimatedContainer)).first;
expect(tester.getSize(rail).width, SideNavigationRailState.expandedWidth);
final surfaceOpacity = tester
.widgetList<AnimatedOpacity>(
find.descendant(of: find.byType(SideNavigationRail), matching: find.byType(AnimatedOpacity)),
)
.singleWhere((widget) => widget.child is ColoredBox);
expect(surfaceOpacity.opacity, 1.0);
expect(_railSurfaceOpacity(tester).opacity, 0.0);
});
testWidgets('expanded rail keeps selected background outside sidebar keyboard focus', (tester) async {