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,
+ ));
+ });
}