当我将 MediaQuery.of(context).padding.top 与 appBar 一起使用时,它返回 0.0。这是为什么?

dip*_*nsh 8 android emulation ios dart flutter

当我MediaQuery.of(context).padding.top在小部件树中没有导航栏的情况下使用时,它会返回实际的真实值。

Reloaded 1 of 529 libraries in 637ms.
I/flutter (31730): 24.0
Run Code Online (Sandbox Code Playgroud)

但是当我将 appBar 放入小部件树中时,它仅返回 0.0。

Reloaded 1 of 529 libraries in 764ms.
I/flutter (31730): 0.0
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙解释一下为什么会发生这种情况吗?

Lee*_*ee3 4

来自该属性的文档

如果您使用了此填充(例如,通过构建一个在其布局中包围或解释此填充的小部件,以便子级不再暴露于此填充),则应通过插入以下内容为小部件树中的后续后代删除此填充使用 MediaQuery.removePadding 工厂的新 MediaQuery 小部件。

由于顶部填充由导航栏占据,因此它不再暴露给其下方的小部件。

  • 谢谢,我现在明白了。我可以在将导航栏添加到小部件树中之前通过计算来收集状态栏大小。:) (2认同)
  • 你能提供一个代码片段吗? (2认同)