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

Flutter如何获取手机顶部安全区域上方区域的高度?

在Flutter中获取手机顶部刘海/状态栏区域高度的解决方案
  • 问题根源:你在SafeArea内部调用MediaQuery时,SafeArea已经修改了当前上下文的MediaQuery数据,返回的是去除安全区域后的padding值,所以拿到的始终是0。必须在SafeArea外部的上下文中获取原始的viewPadding。

  • 修复后的代码示例:

Widget build(BuildContext context) {
    // 此处context未被SafeArea修改,能获取到正确的顶部安全区域高度
    final topSafeHeight = MediaQuery.of(context).viewPadding.top;
    print("顶部安全区域高度: $topSafeHeight");

    return SafeArea(
      child: Scaffold(
        body: _buildVideoContent(),
      ),
    );
  }
  • 额外注意事项:
    • 如果你的应用开启了全屏模式(比如通过SystemChrome.setEnabledSystemUIMode隐藏了状态栏),viewPadding.top会返回0,需要先确保系统UI处于正常显示状态。
    • viewPadding包含了所有系统UI占据的空间(如刘海、状态栏),而padding是viewPadding减去键盘等临时UI的高度,所以用viewPadding.top获取顶部区域高度更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:30:53