Flutter中的AppBar高度

R2T*_*2T8 12 android appbar ios dart flutter

如何在Flutter 中获得AppBar的高度?
我正在使用MarialApp Widget('package:flutter/material.dart').

我有我的上下文的高度,并希望扣除appbar的高度.

final double height = MediaQuery.of(context).size.height;
Run Code Online (Sandbox Code Playgroud)

小智 35

你可以使用这个:

var height = AppBar().preferredSize.height;
Run Code Online (Sandbox Code Playgroud)

这种方式非常简单且简单


Dan*_*cas 27

正常工具栏高度有一个常量: kToolbarHeight

  • 上面写着56,而且太短了 (3认同)

na2*_*axl 25

无需存储AppBar实例,也无需创建一个虚拟实例来获取高度。此外,AppBar.preferredSize将始终返回相同的值56.0,这是 Material Design 的标准,并且该值在某些情况下并不总是可用(例如缺少状态栏的高度)。

由于 anAppBar肯定与 a 一起使用Scaffold,恕我直言,获得真实AppBar高度(设备顶部和Scaffold身体顶部之间的距离)的更聪明的方法是使用:

double height = Scaffold.of(context).appBarMaxHeight;
Run Code Online (Sandbox Code Playgroud)

有了这个,计算的高度将包括(独立于平台):

  • 状态栏高度
  • 应用栏高度
  • 底部应用栏小部件高度(如果有)(例如 TabBar)

希望这会有所帮助!

  • 这个解决方案是完美的 (6认同)
  • 伙计,你刚刚救了我的命!Scaffold 会覆盖 MediaQuerry->padding,因此我总是会错过状态栏的高度。太感谢了! (2认同)

小智 22

只需在 AppBar 中观看

MediaQuery.of(context).padding.top + kToolbarHeight
Run Code Online (Sandbox Code Playgroud)


ap1*_*p14 18

我认为这不是一种理想的方式,但它会起作用.

首先声明AppBar您将在您的小部件中使用的小部件Scaffold.

Widget demoPage() {
  AppBar appBar = AppBar(
    title: Text('Demo'),
  );
  return Scaffold(
    appBar: appBar,
    body: /*
    page body
    */,
  );
}
Run Code Online (Sandbox Code Playgroud)

现在你可以获得你使用它的高度:appBarpreferredSized

double height = appBar.preferredSize.height;
Run Code Online (Sandbox Code Playgroud)

您可以使用此高度来降低屏幕高度.

final double height = MediaQuery.of(context).size.height;
Run Code Online (Sandbox Code Playgroud)

  • `appBar.preferredSize.height` = `kToolbarHeight` = `56.0` 但 `MediaQuery.of(context).padding.top + kToolbarHeight` 正是我想要得到的。 (12认同)
  • 我真的不知道如何减少 appBar.preferredSize.height。那可能吗?多谢。我试图更改 `kToolbarHeight` 的值,但由于它是一个常量变量而失败。 (2认同)
  • 如果发现它更整洁,则可以简单地使用`AppBar()。preferredSize.height`。它将产生与上述相同的结果,但将创建AppBar的另一个实例 (2认同)
  • 额外的知识:-通过使用MediaQuery.of(context).padding.top减去状态栏的高度 (2认同)
  • 请记住,如果您在脚手架内,它可能会覆盖 MediaQuery.padding - 所以您只会得到 0。而是使用: Scaffold.of(context).appBarMaxHeight; 致谢@na2axl! (2认同)

Kam*_*esh 8

获取体高:

MediaQuery.of(context).size.height - (MediaQuery.of(context).padding.top + kToolbarHeight)
Run Code Online (Sandbox Code Playgroud)

我希望,这个解决方案也能帮助你。感谢提出这个问题。


Seb*_*ian 6

AppBar 的固定高度为 56。

您应该创建自己的应用栏来实现 PreferredSizeWidget

class TestAppBar extends StatelessWidget implements PreferredSizeWidget {
  @override
  Widget build(BuildContext context) {
    return AppBar(
      title: Text('TEST'),
      centerTitle: true,
    );
  }

  @override
  Size get preferredSize => Size.fromHeight(34);
}
Run Code Online (Sandbox Code Playgroud)