Set highContrast value from AccessibilityFeatures into MediaQueryData (#48811)
diff --git a/packages/flutter/lib/src/widgets/media_query.dart b/packages/flutter/lib/src/widgets/media_query.dart
index a5d8873..580726de 100644
--- a/packages/flutter/lib/src/widgets/media_query.dart
+++ b/packages/flutter/lib/src/widgets/media_query.dart
@@ -124,7 +124,7 @@
invertColors = window.accessibilityFeatures.invertColors,
disableAnimations = window.accessibilityFeatures.disableAnimations,
boldText = window.accessibilityFeatures.boldText,
- highContrast = false,
+ highContrast = window.accessibilityFeatures.highContrast,
alwaysUse24HourFormat = window.alwaysUse24HourFormat;
/// The size of the media in logical pixels (e.g, the size of the screen).
diff --git a/packages/flutter/test/widgets/media_query_test.dart b/packages/flutter/test/widgets/media_query_test.dart
index 966fa90..b108161 100644
--- a/packages/flutter/test/widgets/media_query_test.dart
+++ b/packages/flutter/test/widgets/media_query_test.dart
@@ -67,6 +67,7 @@
expect(data.invertColors, false);
expect(data.disableAnimations, false);
expect(data.boldText, false);
+ expect(data.highContrast, false);
expect(data.platformBrightness, Brightness.light);
expect(data.physicalDepth, equals(WidgetsBinding.instance.window.physicalDepth));
});
@@ -87,6 +88,7 @@
expect(copied.invertColors, data.invertColors);
expect(copied.disableAnimations, data.disableAnimations);
expect(copied.boldText, data.boldText);
+ expect(copied.highContrast, data.highContrast);
expect(copied.platformBrightness, data.platformBrightness);
});
@@ -117,6 +119,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
platformBrightness: Brightness.dark,
);
expect(copied.size, customSize);
@@ -132,6 +135,7 @@
expect(copied.invertColors, true);
expect(copied.disableAnimations, true);
expect(copied.boldText, true);
+ expect(copied.highContrast, true);
expect(copied.platformBrightness, Brightness.dark);
});
@@ -158,6 +162,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
),
child: Builder(
builder: (BuildContext context) {
@@ -190,6 +195,7 @@
expect(unpadded.invertColors, true);
expect(unpadded.disableAnimations, true);
expect(unpadded.boldText, true);
+ expect(unpadded.highContrast, true);
});
testWidgets('MediaQuery.removePadding only removes specified padding', (WidgetTester tester) async {
@@ -215,6 +221,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
),
child: Builder(
builder: (BuildContext context) {
@@ -244,6 +251,7 @@
expect(unpadded.invertColors, true);
expect(unpadded.disableAnimations, true);
expect(unpadded.boldText, true);
+ expect(unpadded.highContrast, true);
});
testWidgets('MediaQuery.removeViewInsets removes specified viewInsets', (WidgetTester tester) async {
@@ -269,6 +277,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
),
child: Builder(
builder: (BuildContext context) {
@@ -301,6 +310,7 @@
expect(unpadded.invertColors, true);
expect(unpadded.disableAnimations, true);
expect(unpadded.boldText, true);
+ expect(unpadded.highContrast, true);
});
testWidgets('MediaQuery.removeViewInsets removes only specified viewInsets', (WidgetTester tester) async {
@@ -326,6 +336,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
),
child: Builder(
builder: (BuildContext context) {
@@ -355,6 +366,7 @@
expect(unpadded.invertColors, true);
expect(unpadded.disableAnimations, true);
expect(unpadded.boldText, true);
+ expect(unpadded.highContrast, true);
});
testWidgets('MediaQuery.removeViewPadding removes specified viewPadding', (WidgetTester tester) async {
@@ -380,6 +392,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
),
child: Builder(
builder: (BuildContext context) {
@@ -412,6 +425,7 @@
expect(unpadded.invertColors, true);
expect(unpadded.disableAnimations, true);
expect(unpadded.boldText, true);
+ expect(unpadded.highContrast, true);
});
testWidgets('MediaQuery.removeViewPadding removes only specified viewPadding', (WidgetTester tester) async {
@@ -437,6 +451,7 @@
invertColors: true,
disableAnimations: true,
boldText: true,
+ highContrast: true,
),
child: Builder(
builder: (BuildContext context) {
@@ -466,6 +481,7 @@
expect(unpadded.invertColors, true);
expect(unpadded.disableAnimations, true);
expect(unpadded.boldText, true);
+ expect(unpadded.highContrast, true);
});
testWidgets('MediaQuery.textScaleFactorOf', (WidgetTester tester) async {
diff --git a/packages/flutter_test/test/window_test.dart b/packages/flutter_test/test/window_test.dart
index 0d6c412..f9e1e42 100644
--- a/packages/flutter_test/test/window_test.dart
+++ b/packages/flutter_test/test/window_test.dart
@@ -256,6 +256,7 @@
this.disableAnimations = false,
this.boldText = false,
this.reduceMotion = false,
+ this.highContrast = false,
});
@override
@@ -273,6 +274,9 @@
@override
final bool reduceMotion;
+ @override
+ final bool highContrast;
+
/// This gives us some grace time when the dart:ui side adds something to
/// [AccessibilityFeatures], and makes things easier when we do rolls to
/// give us time to catch up.