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

问题描述

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

Reloaded 1 of 529 libraries in 637ms.
I/Flutter (31730): 24.0

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

Reloaded 1 of 529 libraries in 764ms.
I/Flutter (31730): 0.0

有人可以帮忙说明为什么会这样吗?

解决方法

来自此属性的 docs

如果您使用了此填充(例如,通过构建一个小部件,该小部件在其布局中包含或考虑此填充,从而使子项不再接触此填充),则应为小部件中的后续后代移除此填充使用 MediaQuery.removePadding 工厂插入新的 MediaQuery 小部件。

由于顶部填充由导航栏负责,因此不再暴露于其下方的小部件。