Flutter 3.10中window已废弃,如何无context获取原window属性?
解决方案
无需使用Context的情况下,你可以通过PlatformDispatcher结合当前应用视图实例来获取这些原ui.window上的属性,具体对应关系如下:
- ui.window.devicePixelRatio →
PlatformDispatcher.instance.devicePixelRatio - ui.window.physicalSize →
PlatformDispatcher.instance.views.first.physicalSize - ui.window.viewPadding →
PlatformDispatcher.instance.views.first.viewPadding
补充说明
如果你的应用是多视图场景(比如Flutter 3.10+支持的多窗口),需要根据实际目标视图从PlatformDispatcher.instance.views列表中选择对应的视图实例;单视图应用直接取views.first即可。
另外,也可以通过WidgetsBinding.instance.platformDispatcher来获取PlatformDispatcher实例,效果和直接调用PlatformDispatcher.instance一致。
内容的提问来源于stack exchange,提问作者Daniel Roldán
相关产品推荐
相关产品推荐

