flutter 从`MediaQuery.fromWindow`迁移到`MediaQuery.fromView`

rdrgkggo  于 2023-05-29  发布在  Flutter
关注(0)|答案(2)|浏览(470)

如何从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示例,我可以从上下文中获得它吗?或者我如何才能获得它?

zengzsys

zengzsys1#

解决方案比我预期的要简单得多,只需用View.of(context)得到FlutterView

MediaQuery.fromView(
  view: View.of(context),
  child: ...
)
zyfwsgd6

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的列表,以便在没有上下文的情况下访问特定于视图的功能。
参见:

  • View.of用于访问与所提供的BuildContext相关联的FlutterView上的视图特定功能。
  • platformDispatcher从给定的FlutterView访问平台特定的功能。
  • platformDispatcher来访问PlatformDispatcher,后者提供平台特定的功能。

https://docs.flutter.dev/release/breaking-changes/window-singleton

相关问题