无论开始如何,TabBarView都会扩展到底部

问题描述 投票:0回答:1

我一直在努力,现在必须为页面制作Tab Bar。既然我已经成功制作了标签,但有一件事情不让我完成我的任务就是这样,

我有一个如下设计蓝图:

Column{
   mainAxisSize: MainAxisSize.max,
   crossAxisAlignment: CrossAxisAlignment.stretch,
   children: <widget>[
      Text("Hello World!"),
      Container(child: TabWidget())
   ]
}

我没有给TabWidget()的容器任何特定的高度,因为我希望Tabs占据整个高度直到底部。

TabWidget

child: TabBar(
   controller: _controller,
   tabs: [
      new Tab(
         child: Padding(
           padding: EdgeInsets.only(top: 18.0),
           child: Text(""),
         )
      ),
      new Tab(
         child: Padding(
           padding: EdgeInsets.only(top: 18.0),
           child: Text(""),
         )
      ),    
    ]
    )
),
Container(
  //Deifining the height here, not deifing it will hide the content of the tabs
  height: MediaQuery.of(context).size.height/2.3,
  child: new TabBarView(
     controller: _controller,
     children: <Widget>[
        new Container(
          padding: EdgeInsets.only(top: 15.0),
          child: Listview(
            scrollDirection: Axis.Vertical,
            children: <Widget> [
               ...
            ]
          )
        ),
        new Container(
          padding: EdgeInsets.only(top: 15.0),
          child: Listview(
            scrollDirection: Axis.Vertical,
            children: <Widget> [
               ...
            ]
          )
        )  
      ]
    )
  )
  ]
);

这是捕获,现在我已经尝试了我的水平最好得到结果,因此这样做:

  1. 在TabWidget中使用Expanded()来占据高度
  2. double.infinity()的高度元素中使用TabBarView
  3. 我已经读过这个答案:TabBarView without bounded height,但我不希望我的屏幕可滚动,在这种情况下不需要Silver。只是TabBarView应该扩展到底部,而不管它从哪里开始

我不想给我的TabBarView提供一个特定的高度,相反,我希望它不管屏幕都采用全高到底,所以我的高度是按照屏幕动态的。

我想对此有所了解,以便达到我的观点。我在ListView()的孩子中使用TabBarView,所以即使手机屏幕的部分大小很小,用户仍然可以滚动内容。但是高度应该是到底,无论屏幕的大小是多少。谢谢。

欢迎任何疑问。

flutter tabbar dynamic-resizing
1个回答
0
投票

如果您可以在tabBar上方的屏幕中计算其他小部件的高度,那么使用MediaQuery.of(context).size.height您将获得屏幕的高度。从屏幕高度中扣除剩余高度,您可以使用结果值。

附:小心计算并扣除除了标签之外的每个高度值,包括从MediaQuery.of(context).padding.topMediaQuery.of(context).padding.bottom获得的安全区域。

© www.soinside.com 2019 - 2024. All rights reserved.