如何从MediaQuery.fromWindow
迁移到MediaQuery.fromView
?
弃用消息为:
info:'fromWindow'已弃用,不应使用。请改用MediaQuery.fromView。在为即将到来的多窗口支持做准备时,不推荐使用此构造函数。此功能在v3.7.0-32.0.pre之后被弃用。(deprecated_member_use at [flame_studio] lib/src/widgets/left_panel.dart:15)fromView
方法接受了一个FlutterView
示例,我可以从上下文中获得它吗?或者我如何才能获得它?
2条答案
按热度按时间zengzsys1#
解决方案比我预期的要简单得多,只需用
View.of(context)
得到FlutterView
:zyfwsgd62#
如果有人不需要上下文:
包:flutter/src/foundation/binding.dart
SingletonFlutterWindow获取窗口
包含类:BindingBase
已弃用。将在未来的Flutter版本中删除。此属性已被弃用,以便为Flutter即将推出的多视图和多窗口支持做准备。它表示只有一个视图的应用程序的主视图,例如为单显示器移动的设备设计的应用程序。如果嵌入器支持多个视图,则它指向创建的第一个视图,该视图被假定为主视图。如果尚未创建视图或第一个视图已被再次删除,则会抛出。
以下选项可用于迁移依赖于访问此不推荐使用的属性的代码:如果BuildContext可用,请考虑通过View. of查找与该上下文关联的当前FlutterView。它提供了与此不推荐使用的属性相同的功能。但是,特定于平台的功能已经转移到PlatformDispatcher,可以通过FlutterView. platformDispatcher从View.of返回的视图访问PlatformDispatcher。将View.of与BuildContext一起使用是从这个不推荐使用的窗口属性迁移的首选选项。
如果没有上下文可用于查找FlutterView,则此绑定公开的platformDispatcher可以直接用于平台特定的功能。它还在PlatformDispatcher.views中维护了所有可用FlutterViews的列表,以便在没有上下文的情况下访问特定于视图的功能。
参见:
https://docs.flutter.dev/release/breaking-changes/window-singleton