我尝试在一些小部件中间使用DefaultTabController
。所以我的TabBar
不能在AppBar
中,必须关闭一些小部件。所以我的问题是当我使用TabBarView
它崩溃.
这里有一个Flutter示例,但没有找到如何在没有Scaffold
的情况下完成它。
final List<Tab> myTabs = <Tab>[
Tab(text: 'LEFT'),
Tab(text: 'RIGHT')];
代码
DefaultTabController(
length: myTabs.length,
child: Scaffold(
appBar: TabBar(
tabs: myTabs,
),
body: TabBarView(
children: myTabs.map((Tab tab) {
final String label = tab.text.toLowerCase();
return Center(
child: Text(
'This is the $label tab',
style: const TextStyle(fontSize: 36),
),
);
}).toList(),
),
),
);
下面是另一个我应该做image的TabBar示例
真实的的代码
class ProfileTabBarNavigation extends StatelessWidget {
final List<Tab> myTabs = <Tab>[
const Tab(text: kArtwork),
const Tab(text: kPastJobs)];
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
initialIndex: 0,
child: Padding(
padding: kPaddingTabBar,
child: Container(
padding: EdgeInsets.all(5.0),
decoration: BoxDecoration(
color: kLightGrey,
borderRadius: BorderRadius.all(
Radius.circular(50),
),
),
child: Column(children: <Widget>[
TabBar(
tabs: myTabs,
unselectedLabelColor: Colors.black54,
labelColor: Colors.black,
unselectedLabelStyle: kBoldText,
labelStyle: kBoldText,
indicatorSize: TabBarIndicatorSize.tab,
indicator: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(50),
color: Colors.white,
),
),
TabBarView(
children: myTabs.map((Tab tab) {
final String label = tab.text.toLowerCase();
return Center(
child: Text(
'This is the $label tab',
style: const TextStyle(fontSize: 36),
),
);
}).toList(),
),
]),
),
),
);
}
}
4条答案
按热度按时间lokaqttq1#
用Expanded Package
TabBarView
。在DartPad上尝试
shyt4zoc2#
您可以在屏幕中间使用defaultTabView或使用以下软件包之一
Bubble Tab Indicator
MD2 Tab Indicator
dfddblmv3#
smdnsysy4#
您可以将
TabBar
和TabbarView
放在Column中,只要TabBarView
包含在Expanded
小部件中即可。