在Flutter中获取脚手架底部导航栏的高度

时间:2018-12-02 15:52:11

标签: flutter

如何在Flutter中获得height的{​​{1}}中的BottomNavigationBar?我知道有Scaffold个屏幕尺寸。 MediaQuery.of(context).size是否有类似的方法?

3 个答案:

答案 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(),
    );
  }