diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 45e96010..3bb60eba 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -1570,6 +1570,7 @@ class _MainScreenState extends State child: Stack( clipBehavior: Clip.hardEdge, children: [ + Positioned.fill(child: ColoredBox(color: Theme.of(context).scaffoldBackgroundColor)), Positioned( top: 0, bottom: 0, diff --git a/lib/widgets/side_navigation_rail.dart b/lib/widgets/side_navigation_rail.dart index fc8ab9a3..929faf3a 100644 --- a/lib/widgets/side_navigation_rail.dart +++ b/lib/widgets/side_navigation_rail.dart @@ -644,7 +644,7 @@ class SideNavigationRailState extends State 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), diff --git a/test/widgets/side_navigation_rail_test.dart b/test/widgets/side_navigation_rail_test.dart index 214be6e7..72204338 100644 --- a/test/widgets/side_navigation_rail_test.dart +++ b/test/widgets/side_navigation_rail_test.dart @@ -64,6 +64,14 @@ BoxDecoration? _railItemDecoration(WidgetTester tester, Finder item) { as BoxDecoration?; } +AnimatedOpacity _railSurfaceOpacity(WidgetTester tester) { + return tester + .widgetList( + find.descendant(of: find.byType(SideNavigationRail), matching: find.byType(AnimatedOpacity)), + ) + .singleWhere((widget) => widget.child is ColoredBox); +} + Future _pumpBasicRail( WidgetTester tester, { GlobalKey? 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( - 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 {