如何在Flutter中获得height
的{{1}}中的BottomNavigationBar
?我知道有Scaffold
个屏幕尺寸。 MediaQuery.of(context).size
是否有类似的方法?
答案 0 :(得分:1)
要获取窗口小部件的大小,可以使用key
字段
final key = GlobalKey();
... set key field of widget
double height = key.currentContext.size.height;
答案 1 :(得分:1)
Container(
width: MediaQuery.of(context).size.width,
height: kBottomNavigationBarHeight,
child: Scaffold(
backgroundColor: Colors.transparent,
body: null,
bottomNavigationBar: BottomNavigationBar()
)
)
这将创建一个只为BottomNavigationBar小部件提供足够空间的脚手架。
kBottomNavigationBarHeight是一个常量,可以在constants.dart文件中找到。
答案 2 :(得分:0)
如果您想知道带有 bottomNavigationBar 的主 Scaffold 的子屏幕之一中 bottomNavigationBar 的高度,您可以使用 MediaQuery:
final bottomPadding = MediaQuery.of(context).padding.bottom;
MediaQuery 的底部填充,除了 SafeArea,还考虑了 bottomNavigationBar 的高度。
更详细:
@override
Widget build(BuildContext context) {
final bottomPadding = MediaQuery.of(context).padding.bottom; // From here you will get only SafeArea padding.
return Scaffold(
body: PageView(
children: const [
// But in build() method of each of these screens you will get
// SafeArea padding with bottomNavigationBar height
// just by calling MediaQuery.of(context).padding.bottom;
FirstScreen(),
SecondScreen(),
ThirdScreen(),
FourthScreen(),
],
),
bottomNavigationBar: MyBottomNavigationBar(),
);
}