Fix both platform system chrome definitions (#18808)
diff --git a/examples/flutter_gallery/lib/demo/contacts_demo.dart b/examples/flutter_gallery/lib/demo/contacts_demo.dart index 34f4720..5ed0bc4 100644 --- a/examples/flutter_gallery/lib/demo/contacts_demo.dart +++ b/examples/flutter_gallery/lib/demo/contacts_demo.dart
@@ -184,7 +184,7 @@ new SliverList( delegate: new SliverChildListDelegate(<Widget>[ new AnnotatedRegion<SystemUiOverlayStyle>( - value: SystemUiOverlayStyle.light, + value: SystemUiOverlayStyle.dark, child: new _ContactCategory( icon: Icons.call, children: <Widget>[
diff --git a/examples/flutter_gallery/lib/gallery/home.dart b/examples/flutter_gallery/lib/gallery/home.dart index b11761c..e668119 100644 --- a/examples/flutter_gallery/lib/gallery/home.dart +++ b/examples/flutter_gallery/lib/gallery/home.dart
@@ -402,7 +402,7 @@ } home = new AnnotatedRegion<SystemUiOverlayStyle>( child: home, - value: SystemUiOverlayStyle.dark + value: SystemUiOverlayStyle.light ); return home;
diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart index e02cf13..025aa30 100644 --- a/packages/flutter/lib/src/material/app_bar.dart +++ b/packages/flutter/lib/src/material/app_bar.dart
@@ -478,8 +478,8 @@ } final Brightness brightness = widget.brightness ?? themeData.primaryColorBrightness; final SystemUiOverlayStyle overlayStyle = brightness == Brightness.dark - ? SystemUiOverlayStyle.dark - : SystemUiOverlayStyle.light; + ? SystemUiOverlayStyle.light + : SystemUiOverlayStyle.dark; return new Semantics( container: true,
diff --git a/packages/flutter/lib/src/services/system_chrome.dart b/packages/flutter/lib/src/services/system_chrome.dart index 344afbd..0ceb002 100644 --- a/packages/flutter/lib/src/services/system_chrome.dart +++ b/packages/flutter/lib/src/services/system_chrome.dart
@@ -100,12 +100,12 @@ /// System overlays should be drawn with a light color. Intended for /// applications with a dark background. static const SystemUiOverlayStyle light = const SystemUiOverlayStyle( - systemNavigationBarColor: const Color(0xFFFFFFFF), + systemNavigationBarColor: const Color(0xFF000000), systemNavigationBarDividerColor: null, statusBarColor: null, - systemNavigationBarIconBrightness: Brightness.dark, - statusBarIconBrightness: Brightness.dark, - statusBarBrightness: Brightness.light, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.light, + statusBarBrightness: Brightness.dark, ); /// System overlays should be drawn with a dark color. Intended for @@ -115,8 +115,8 @@ systemNavigationBarDividerColor: null, statusBarColor: null, systemNavigationBarIconBrightness: Brightness.light, - statusBarIconBrightness: Brightness.light, - statusBarBrightness: Brightness.dark, + statusBarIconBrightness: Brightness.dark, + statusBarBrightness: Brightness.light, ); /// Creates a new [SystemUiOverlayStyle]. @@ -330,5 +330,9 @@ } static SystemUiOverlayStyle _pendingStyle; + + /// The last style that was set using [SystemChrome.setSystemUIOverlayStyle]. + @visibleForTesting + static SystemUiOverlayStyle get latestStyle => _latestStyle; static SystemUiOverlayStyle _latestStyle; }
diff --git a/packages/flutter/test/cupertino/nav_bar_test.dart b/packages/flutter/test/cupertino/nav_bar_test.dart index 5d40880..fdde8b7 100644 --- a/packages/flutter/test/cupertino/nav_bar_test.dart +++ b/packages/flutter/test/cupertino/nav_bar_test.dart
@@ -6,6 +6,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import '../widgets/semantics_tester.dart'; @@ -752,6 +753,47 @@ // is fixed. skip: !Platform.isLinux, ); + + + testWidgets('NavBar draws a light system bar for a dark background', (WidgetTester tester) async { + await tester.pumpWidget( + new WidgetsApp( + color: const Color(0xFFFFFFFF), + onGenerateRoute: (RouteSettings settings) { + return new CupertinoPageRoute<void>( + settings: settings, + builder: (BuildContext context) { + return const CupertinoNavigationBar( + middle: const Text('Test'), + backgroundColor: const Color(0xFF000000), + ); + }, + ); + }, + ), + ); + expect(SystemChrome.latestStyle, SystemUiOverlayStyle.light); + }); + + testWidgets('NavBar draws a dark system bar for a light background', (WidgetTester tester) async { + await tester.pumpWidget( + new WidgetsApp( + color: const Color(0xFFFFFFFF), + onGenerateRoute: (RouteSettings settings) { + return new CupertinoPageRoute<void>( + settings: settings, + builder: (BuildContext context) { + return const CupertinoNavigationBar( + middle: const Text('Test'), + backgroundColor: const Color(0xFFFFFFFF), + ); + }, + ); + }, + ), + ); + expect(SystemChrome.latestStyle, SystemUiOverlayStyle.dark); + }); } class _ExpectStyles extends StatelessWidget {
diff --git a/packages/flutter/test/material/app_bar_test.dart b/packages/flutter/test/material/app_bar_test.dart index 602e418..634fcac 100644 --- a/packages/flutter/test/material/app_bar_test.dart +++ b/packages/flutter/test/material/app_bar_test.dart
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import '../widgets/semantics_tester.dart'; @@ -1340,4 +1341,36 @@ semantics.dispose(); }); + + testWidgets('AppBar draws a light system bar for a dark background', (WidgetTester tester) async { + final ThemeData darkTheme = new ThemeData.dark(); + await tester.pumpWidget(new MaterialApp( + theme: darkTheme, + home: Scaffold( + appBar: new AppBar(title: const Text('test')) + ), + )); + + expect(darkTheme.primaryColorBrightness, Brightness.dark); + expect(SystemChrome.latestStyle, const SystemUiOverlayStyle( + statusBarBrightness: Brightness.dark, + statusBarIconBrightness: Brightness.light, + )); + }); + + testWidgets('AppBar draws a dark system bar for a light background', (WidgetTester tester) async { + final ThemeData lightTheme = new ThemeData(primaryColor: Colors.white); + await tester.pumpWidget(new MaterialApp( + theme: lightTheme, + home: Scaffold( + appBar: new AppBar(title: const Text('test')) + ), + )); + + expect(lightTheme.primaryColorBrightness, Brightness.light); + expect(SystemChrome.latestStyle, const SystemUiOverlayStyle( + statusBarBrightness: Brightness.light, + statusBarIconBrightness: Brightness.dark, + )); + }); }