gpt4 book ai didi

Flutter:无法使用 TabBar 设置 SliverPersistentHeader 的首选高度

转载 作者:行者123 更新时间:2023-12-04 08:59:08 27 4
gpt4 key购买 nike

我正在尝试制作我的 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(),
],
),
);
}

最佳答案

包裹 _SliverAppBarTabDelegate的 child 带着 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;
}
}

关于Flutter:无法使用 TabBar 设置 SliverPersistentHeader 的首选高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63646191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com