我的主页上有$user=$request->is_active;
和SliverPersistentHeader
,如下所示:
TabBarView
在此之后,我对每个选项卡使用了单个类,例如下面的代码:
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Theme.of(context).backgroundColor,
body: DefaultTabController(
length: 3,
child: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
SliverAppBar(
expandedHeight: 250.0,
floating: false,
pinned: true,
),
SliverPersistentHeader(
delegate: _SliverAppBarDelegate(
TabBar(
labelStyle: TextStyle(
fontFamily: 'Raleway',
fontSize: 17,
fontWeight: FontWeight.w400,
color: Theme.of(context).backgroundColor),
indicatorColor: Theme.of(context).hintColor,
labelColor: Theme.of(context).buttonColor,
unselectedLabelColor: Theme.of(context).dividerColor,
tabs: [
Tab(text: "Menu"),
Tab(text: "About"),
Tab(text: "Contact"),
],
),
),
pinned: true,
),
];
},
body: TabBarView(
children: <Widget>[MenuTab(), AboutTab(), ContactTab()],
),
),
),
);
}
}
class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
_SliverAppBarDelegate(this._tabBar);
final TabBar _tabBar;
@override
double get minExtent => _tabBar.preferredSize.height;
@override
double get maxExtent => _tabBar.preferredSize.height;
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return new Container(
child: _tabBar,
);
}
@override
bool shouldRebuild(_SliverAppBarDelegate oldDelegate) {
return false;
}
}
问题:
在截屏后收起SliverPersistentHeader时,我得到了不好的结果。 tnx
答案 0 :(得分:1)
_SliverAppBarDelegate()函数返回一个Container,您可以在其中添加颜色,如下所示:
class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
_SliverAppBarDelegate(this._tabBar);
final TabBar _tabBar;
@override
double get minExtent => _tabBar.preferredSize.height;
@override
double get maxExtent => _tabBar.preferredSize.height;
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return new Container(
color: Colors.white, // ADD THE COLOR YOU WANT AS BACKGROUND.
child: _tabBar,
);
}
@override
bool shouldRebuild(_SliverAppBarDelegate oldDelegate) {
return false;
}
}