diff --git a/packages/flutter/lib/src/cupertino/sheet.dart b/packages/flutter/lib/src/cupertino/sheet.dart index e020f87dbe..d6041284e6 100644 --- a/packages/flutter/lib/src/cupertino/sheet.dart +++ b/packages/flutter/lib/src/cupertino/sheet.dart @@ -258,8 +258,6 @@ class CupertinoSheetTransition extends StatefulWidget { final Animation scaleAnimation = curvedAnimation.drive(_kScaleTween); curvedAnimation.dispose(); - SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); - final bool isDarkMode = CupertinoTheme.brightnessOf(context) == Brightness.dark; final Color overlayColor = isDarkMode ? const Color(0xFFc8c8c8) : const Color(0xFF000000); @@ -350,6 +348,12 @@ class _CupertinoSheetTransitionState extends State { @override void initState() { super.initState(); + SystemChrome.setSystemUIOverlayStyle( + const SystemUiOverlayStyle( + statusBarBrightness: Brightness.dark, + statusBarIconBrightness: Brightness.light, + ), + ); _setupAnimation(); } diff --git a/packages/flutter/test/cupertino/sheet_test.dart b/packages/flutter/test/cupertino/sheet_test.dart index 5e2005fdd2..7b01b4cf30 100644 --- a/packages/flutter/test/cupertino/sheet_test.dart +++ b/packages/flutter/test/cupertino/sheet_test.dart @@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -1212,4 +1213,38 @@ void main() { expect(finalPosition, equals(initialPosition)); }); }); + + testWidgets('CupertinoSheetTransition handles SystemUiOverlayStyle changes', ( + WidgetTester tester, + ) async { + final AnimationController controller = AnimationController( + duration: const Duration(milliseconds: 100), + vsync: const TestVSync(), + ); + addTearDown(controller.dispose); + + final Animation secondaryAnimation = Tween( + begin: 1, + end: 0, + ).animate(controller); + + await tester.pumpWidget( + CupertinoApp( + home: AnimatedBuilder( + animation: controller, + builder: (BuildContext context, Widget? child) { + return CupertinoSheetTransition( + primaryRouteAnimation: controller, + secondaryRouteAnimation: secondaryAnimation, + linearTransition: false, + child: const SizedBox(), + ); + }, + ), + ), + ); + + expect(SystemChrome.latestStyle!.statusBarBrightness, Brightness.dark); + expect(SystemChrome.latestStyle!.statusBarIconBrightness, Brightness.light); + }); }