You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WidgetsBinding.instance.window已弃用,相关代码如何修改?

解决WidgetsBinding.instance.window弃用问题

从Flutter 3.10版本开始,WidgetsBinding.instance.window已被标记为弃用,官方推荐使用platformDispatcher替代它来获取显示相关的系统属性。

针对你提供的代码,可以做如下调整:

方案一:使用PlatformDispatcher(适用于无Widget上下文场景)

final platformDispatcher = WidgetsBinding.instance.platformDispatcher;
var pixelRatio = platformDispatcher.devicePixelRatio;
var size = platformDispatcher.physicalSize / pixelRatio;

方案二:使用MediaQuery(适用于Widget树内部场景)

如果你的代码处于Widget组件中,更推荐用MediaQuery来获取这些属性,它能自动响应屏幕配置变化:

final mediaQueryData = MediaQuery.of(context);
var pixelRatio = mediaQueryData.devicePixelRatio;
var size = mediaQueryData.size; // 这里的size已经是逻辑尺寸,无需再除以pixelRatio

两种方案的选择依据:

  • 当代码不在Widget树内(比如全局初始化工具类、后台逻辑),用PlatformDispatcher更合适;
  • 当代码在Widget组件中,优先用MediaQuery,它能和Flutter的布局系统更好地联动。

内容的提问来源于stack exchange,提问作者Anu Desai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:22:36