我正在尝试使TabBar
的高度更大。它只能发挥一定的作用。这是我的SliverPersistentHeader
:
SliverPersistentHeader(
pinned: true,
delegate: _SliverAppBarTabDelegate(
child: PreferredSize(
preferredSize: Size.fromHeight(45.0),
child: Container(
color: Colors.white,
child: TabBar(
isScrollable: true,
labelColor: Colors.black,
unselectedLabelColor: Colors.black38,
indicatorColor: Theme.of(context).primaryColor,
tabs: createTabList(),
controller: tabBarController,
),
),
),
),
),
这是我的代表:
class _SliverAppBarTabDelegate extends SliverPersistentHeaderDelegate {
final PreferredSize child;
_SliverAppBarTabDelegate({this.child});
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return child;
}
@override
double get maxExtent => child.preferredSize.height;
@override
double get minExtent => child.preferredSize.height;
@override
bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
return false;
}
}
为什么不允许我将尺寸设置为更大的值?
编辑: 这是我的有状态小部件的整体结构:
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(),
SliverPersistentHeader(),
SliverList(),
],
),
);
}
答案 0 :(得分:1)
用_SliverAppBarTabDelegate
给SizedBox.expand
的孩子换行:
class _SliverAppBarTabDelegate extends SliverPersistentHeaderDelegate {
final PreferredSize child;
_SliverAppBarTabDelegate({this.child});
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return SizedBox.expand(child: child);
}
@override
double get maxExtent => child.preferredSize.height;
@override
double get minExtent => child.preferredSize.height;
@override
bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
return false;
}
}