diff --git a/packages/flutter/lib/src/cupertino/date_picker.dart b/packages/flutter/lib/src/cupertino/date_picker.dart index 37bdbe96ac..79ac686c27 100644 --- a/packages/flutter/lib/src/cupertino/date_picker.dart +++ b/packages/flutter/lib/src/cupertino/date_picker.dart @@ -777,7 +777,7 @@ class _CupertinoDatePickerDateTimeState extends State { } return MediaQuery( - data: const MediaQueryData(textScaleFactor: 1.0), + data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: DefaultTextStyle.merge( style: _kDefaultPickerTextStyle, child: CustomMultiChildLayout( @@ -1145,7 +1145,7 @@ class _CupertinoDatePickerDateState extends State { } return MediaQuery( - data: const MediaQueryData(textScaleFactor: 1.0), + data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: DefaultTextStyle.merge( style: _kDefaultPickerTextStyle, child: CustomMultiChildLayout( @@ -1669,11 +1669,9 @@ class _CupertinoTimerPickerState extends State { } final CupertinoThemeData themeData = CupertinoTheme.of(context); return MediaQuery( - data: const MediaQueryData( - // The native iOS picker's text scaling is fixed, so we will also fix it - // as well in our picker. - textScaleFactor: 1.0, - ), + // The native iOS picker's text scaling is fixed, so we will also fix it + // as well in our picker. + data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: CupertinoTheme( data: themeData.copyWith( textTheme: themeData.textTheme.copyWith( diff --git a/packages/flutter/test/cupertino/date_picker_test.dart b/packages/flutter/test/cupertino/date_picker_test.dart index 701febc9d7..69afc8174f 100644 --- a/packages/flutter/test/cupertino/date_picker_test.dart +++ b/packages/flutter/test/cupertino/date_picker_test.dart @@ -1187,6 +1187,51 @@ void main() { handle.dispose(); }); + testWidgets('CupertinoDataPicker does not provide invalid MediaQuery', (WidgetTester tester) async { + // Regression test for https://github.com/flutter/flutter/issues/47989. + Brightness brightness = Brightness.light; + StateSetter setState; + + await tester.pumpWidget( + CupertinoApp( + theme: const CupertinoThemeData( + textTheme: CupertinoTextThemeData( + dateTimePickerTextStyle: TextStyle( + color: CupertinoDynamicColor.withBrightness( + color: Color(0xFFFFFFFF), + darkColor: Color(0xFF000000), + ), + ), + ), + ), + home: StatefulBuilder(builder: (BuildContext context, StateSetter stateSetter) { + setState = stateSetter; + return MediaQuery( + data: MediaQuery.of(context).copyWith(platformBrightness: brightness), + child: CupertinoDatePicker( + initialDateTime: DateTime(2019), + mode: CupertinoDatePickerMode.date, + onDateTimeChanged: (DateTime date) {}, + ), + ); + }), + ), + ); + + expect( + tester.widget(find.text('2019')).style.color, + isSameColorAs(const Color(0xFFFFFFFF)), + ); + + setState(() { brightness = Brightness.dark; }); + await tester.pump(); + + expect( + tester.widget(find.text('2019')).style.color, + isSameColorAs(const Color(0xFF000000)), + ); + }); + testWidgets('picker exports semantics', (WidgetTester tester) async { final SemanticsHandle handle = tester.ensureSemantics(); debugResetSemanticsIdCounter();