From 766e4d28a4df84ea76ed6f3b1e8e9fd191f84201 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Wed, 25 Jan 2023 15:43:00 -0800 Subject: [PATCH] Remove single-view assumption from material library (#117486) * Remove single-view assumption from material library * one widget --- packages/flutter/lib/src/material/dropdown.dart | 4 ++-- packages/flutter/lib/src/material/time_picker.dart | 2 +- packages/flutter/lib/src/widgets/binding.dart | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/flutter/lib/src/material/dropdown.dart b/packages/flutter/lib/src/material/dropdown.dart index dea3ea5df793..c85dfc7bfb9b 100644 --- a/packages/flutter/lib/src/material/dropdown.dart +++ b/packages/flutter/lib/src/material/dropdown.dart @@ -1358,9 +1358,9 @@ class _DropdownButtonState extends State> with WidgetsBindi Orientation _getOrientation(BuildContext context) { Orientation? result = MediaQuery.maybeOrientationOf(context); if (result == null) { - // If there's no MediaQuery, then use the window aspect to determine + // If there's no MediaQuery, then use the view aspect to determine // orientation. - final Size size = WidgetsBinding.instance.window.physicalSize; + final Size size = View.of(context).physicalSize; result = size.width > size.height ? Orientation.landscape : Orientation.portrait; } return result; diff --git a/packages/flutter/lib/src/material/time_picker.dart b/packages/flutter/lib/src/material/time_picker.dart index 62ee80b6d5ee..4482ab1379d2 100644 --- a/packages/flutter/lib/src/material/time_picker.dart +++ b/packages/flutter/lib/src/material/time_picker.dart @@ -2053,7 +2053,7 @@ class _HourMinuteTextFieldState extends State<_HourMinuteTextField> with Restora // If screen reader is in use, make the hint text say hours/minutes. // Otherwise, remove the hint text when focused because the centered cursor // appears odd above the hint text. - final String? hintText = MediaQuery.accessibleNavigationOf(context) || WidgetsBinding.instance.window.semanticsEnabled + final String? hintText = MediaQuery.accessibleNavigationOf(context) || View.of(context).platformDispatcher.semanticsEnabled ? widget.semanticHintText : (focusNode.hasFocus ? null : _formattedValue); diff --git a/packages/flutter/lib/src/widgets/binding.dart b/packages/flutter/lib/src/widgets/binding.dart index 15bddf1f10a2..ee7fb9aaae49 100644 --- a/packages/flutter/lib/src/widgets/binding.dart +++ b/packages/flutter/lib/src/widgets/binding.dart @@ -117,7 +117,9 @@ abstract class WidgetsBindingObserver { /// @override /// void initState() { /// super.initState(); - /// _lastSize = WidgetsBinding.instance.window.physicalSize; + /// // [View.of] exposes the view from `WidgetsBinding.instance.platformDispatcher.views` + /// // into which this widget is drawn. + /// _lastSize = View.of(context).physicalSize; /// WidgetsBinding.instance.addObserver(this); /// } /// @@ -129,7 +131,7 @@ abstract class WidgetsBindingObserver { /// /// @override /// void didChangeMetrics() { - /// setState(() { _lastSize = WidgetsBinding.instance.window.physicalSize; }); + /// setState(() { _lastSize = View.of(context).physicalSize; }); /// } /// /// @override @@ -186,7 +188,7 @@ abstract class WidgetsBindingObserver { /// /// @override /// void didChangeTextScaleFactor() { - /// setState(() { _lastTextScaleFactor = WidgetsBinding.instance.window.textScaleFactor; }); + /// setState(() { _lastTextScaleFactor = WidgetsBinding.instance.platformDispatcher.textScaleFactor; }); /// } /// /// @override