我一直在努力,现在必须为页面制作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> [
...
]
)
)
]
)
)
]
);
这是捕获,现在我已经尝试了我的水平最好得到结果,因此这样做:
Expanded()
来占据高度double.infinity()
的高度元素中使用TabBarView
Silver
。只是TabBarView应该扩展到底部,而不管它从哪里开始我不想给我的TabBarView提供一个特定的高度,相反,我希望它不管屏幕都采用全高到底,所以我的高度是按照屏幕动态的。
我想对此有所了解,以便达到我的观点。我在ListView()
的孩子中使用TabBarView
,所以即使手机屏幕的部分大小很小,用户仍然可以滚动内容。但是高度应该是到底,无论屏幕的大小是多少。谢谢。
欢迎任何疑问。
如果您可以在tabBar上方的屏幕中计算其他小部件的高度,那么使用MediaQuery.of(context).size.height
您将获得屏幕的高度。从屏幕高度中扣除剩余高度,您可以使用结果值。
附:小心计算并扣除除了标签之外的每个高度值,包括从MediaQuery.of(context).padding.top
和MediaQuery.of(context).padding.bottom
获得的安全区域。