如何在Flutter中获得 AppBar 的高度?
我正在使用MarialApp小工具('包:flutter / material.dart')。
我有上下文的高度,想要扣除appbar的高度。
final double height = MediaQuery.of(context).size.height;
答案 0 :(得分:12)
只需在AppBar中观看
MediaQuery.of(context).padding.top + kToolbarHeight
答案 1 :(得分:10)
我认为这不是一种理想的方式,但它会起作用。
首先声明您将在AppBar
中使用的Scaffold
小部件。
Widget demoPage() {
AppBar appBar = AppBar(
title: Text('Demo'),
);
return Scaffold(
appBar: appBar,
body: /*
page body
*/,
);
}
现在您可以使用appBar
获取preferredSized
的身高:
double height = appBar.preferredSize.height;
您可以使用此高度从屏幕高度缩小。
final double height = MediaQuery.of(context).size.height;
答案 2 :(得分:9)
无需存储AppBar
实例,也无需创建虚拟实例来获取高度。另外,AppBar.preferredSize
将始终返回相同的56.0
值,这是Material Design的标准,并且在某些情况下该值将始终不可用(例如,缺少状态栏的高度) )。
由于AppBar
肯定与Scaffold
一起使用,恕我直言,这是获取实际AppBar
高度(设备顶部和顶部之间的距离)的更聪明的方法。 Scaffold
正文)将用于:
double height = Scaffold.of(context).appBarMaxHeight;
由此,计算出的高度将(独立于平台)包括:
希望这会有所帮助!
答案 3 :(得分:2)
正常的工具栏高度有一个常数:kToolbarHeight
答案 4 :(得分:2)
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);
}
答案 5 :(得分:2)
获取身高:
MediaQuery.of(context).size.height - (MediaQuery.of(context).padding.top + kToolbarHeight)
我希望,该解决方案也能为您提供帮助。感谢问这个问题。
答案 6 :(得分:1)
您可以使用以下方法获取AppBar的高度:
double height = appBar.preferredSize.height;
确保已声明AppBar小部件。
答案 7 :(得分:1)
您可以使用:
var height = AppBar().preferredSize.Height;
这种方式非常简单易行
答案 8 :(得分:0)
您可以使用此:
@override
final Size preferredSize; // default is 56.0
WidgetAppBar({@required this.appBarTitle, @required this.appBarColor, Key key}) : preferredSize = Size.fromHeight(40), super(key: key);
答案 9 :(得分:-1)
使用优先尺寸
//defined as
Size preferredSize
优先大小是一个大小,其高度是kToolbarHeight和底部小部件首选高度的总和。
脚手架使用此尺寸设置其应用栏的高度。
在app bar类中定义如下实现PreferredSizeWidget
preferredSize = new Size.fromHeight(kToolbarHeight + (bottom?.preferredSize?.height ?? 0.0))
例如链接......
https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/material/app_bar.dart