可以根据 TabBarView 的子控件计算出高度,可以使用 LayoutBuilder 和 TabBarView 的 IndexedStack 来实现。下面是一个示例代码:
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage>
with SingleTickerProviderStateMixin {
late TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('TabBarView Height'),
bottom: TabBar(
controller: _tabController,
tabs: [
Tab(text: 'Tab 1'),
Tab(text: 'Tab 2'),
],
),
),
body: Column(
children: [
Expanded(
child: LayoutBuilder(
builder: (context, constraints) {
return IndexedStack(
index: _tabController.index,
children: [
Container(
child: SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: constraints.maxHeight,
),
child: Column(
children: [
Text('Tab 1 Content'),
// Add more widgets
],
),
),
),
),
Container(
child: SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: constraints.maxHeight,
),
child: Column(
children: [
Text('Tab 2 Content'),
// Add more widgets
],
),
),
),
),
],
);
},
),
),
],
),
);
}
}