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

Flutter中MediaQueryData.fromWindow(ui.window)的替代方案咨询

替代MediaQueryData.fromWindow(ui.window)的方案

在Widget树内获取

如果你的代码是在Widget类里(比如build方法中),直接用MediaQuery.of(context)就能拿到当前的MediaQueryData,这是官方推荐的替代方式,还能自动监听窗口变化,布局会跟着自动更新:

MediaQueryData mediaQueryData = MediaQuery.of(context);
// 示例:获取屏幕尺寸
Size screenSize = mediaQueryData.size;
// 示例:获取状态栏高度
double statusBarHeight = mediaQueryData.padding.top;

在非Widget树内获取

如果是在全局工具类、ViewModel这类脱离Widget树的代码里,可以通过WidgetsBinding来获取:

import 'package:flutter/widgets.dart';

MediaQueryData getMediaQueryData() {
  final view = WidgetsBinding.instance.platformDispatcher.views.first;
  return MediaQueryData.fromView(view);
}

注意:多窗口应用需根据实际需求选择对应view,单窗口场景用first即可,建议添加非空判断避免异常。

内容的提问来源于stack exchange,提问作者Valerie Ackon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:54:50