android 当padding.top我和appBar一起使用时,MediaQuery.of(context). www.example.com返回0.0,为什么会这样?

yqkkidmi  于 2022-12-16  发布在  Android
关注(0)|答案(2)|浏览(136)

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

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

但是当我把appBar放到widget树中时,它只返回0.0。

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

有人能帮我解释一下为什么会发生这种事吗?

7y4bm7vi

7y4bm7vi1#

从此属性的docs
如果您使用了此填充(例如,通过构建一个小部件,在其布局中封装或考虑此填充,使子部件不再暴露于此填充),则应使用MediaQuery.removePadding工厂插入一个新的MediaQuery小部件,从而为小部件树中的后续后代删除此填充。
由于顶部填充由navBar负责,因此它不再暴露给其下方的小部件。

bn31dyow

bn31dyow2#

在我的例子中,我传递了padding值,并在Page1中使用了padding.top

Widget build(BuildContext context) {
    final padding = MediaQuery.of(context).padding;
    return SafeArea(
      child: Scaffold(
        body: IndexedStack(
          children: [
            Page1(padding),
            Page2(),
            Page3(),
            Page4(),
          ],
        ),

相关问题