gpt4 book ai didi

flutter - Sliverappbar与主体中的内容重叠( flutter )

转载 作者:行者123 更新时间:2023-12-03 04:38:09 24 4
gpt4 key购买 nike

Screenshot of the output我正在使用Sliver应用程序栏以获得一些更好的ui,我想将选项卡保留在必须固定的应用程序栏中。仅需固定选项卡,而带有标题的应用栏仅应拖动到顶部才能展开。当我固定为true时,制表符会覆盖正文中不需要的内容。

  return Scaffold(
body: SafeArea(
child: DefaultTabController(
length: 5,
child: NestedScrollView(
headerSliverBuilder:
(BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
SliverAppBar(

backgroundColor: Colors.white,
floating: false,
flexibleSpace: FlexibleSpaceBar(
title: Text(
"Home Page",
style: TextStyle(
color: Colors.teal,
),
),
),
actions: [
IconButton(
icon: Icon(
Icons.message,
color: Colors.grey[700],
),
onPressed: () {},
),
SizedBox(width: 5)

],

),
SliverPersistentHeader(
pinned: true,
delegate: _SliverAppBarDelegate(
TabBar(
labelColor: Colors.teal,
unselectedLabelColor: Colors.grey[600],
tabs: [
Tab(icon: Icon(Icons.home)),
Tab(icon: Icon(Icons.people_outline)),
Tab(icon: Icon(Icons.account_balance)),
Tab(icon: Icon(Icons.notifications_active)),
Tab(icon: Icon(Icons.menu)),
],
),
),
),
];
},
body: ListView(
children: [
Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0),
child: Row(
children: [
SizedBox(width: 10),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 6.0),
child: CircleAvatar(
radius: width(context) * 0.08,
),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: Container(
width: width(context) * 0.74,
height: width(context) * 0.15,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey[800]),
borderRadius: BorderRadius.circular(100)),
child: Column([![enter image description here][1]][1]
mainAxisAlignment: MainAxisAlignment.center,
children: [
Wrap(
children: [
Text('To ask a question \n type here...', style: TextStyle(fontSize: 22),),
],
),

],
),
),
),
],
),
),
Row(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: height(context)*0.07,
width: width(context)*0.70,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey[800]),
borderRadius: BorderRadius.circular(10)),
),
),
Container(
height: height(context)*0.07,
width: width(context)*0.25,
decoration: BoxDecoration(
border: Border.all(color: Colors.grey[800]),
borderRadius: BorderRadius.circular(10)),
),
],
),
Padding(
padding: const EdgeInsets.only(top: 8.0, left: 8, right: 8),
child: Divider(
color: Colors.grey[600],
),
),
Padding(
padding: const EdgeInsets.only(top: 8.0, left: 8, right: 8),
child: Card(
child: Container(
height: 200,
),
),
),
Padding(
padding: const EdgeInsets.only(top: 8.0, left: 8, right: 8),
child: Card(
child: Container(
height: 200,
),
),
),
Padding(
padding: const EdgeInsets.only(top: 8.0, left: 8, right: 8),
child: Card(
child: Container(
height: 200,
),
),
), Padding(
padding: const EdgeInsets.only(top: 8.0, left: 8, right: 8),
child: Card(
child: Container(
height: 200,
),
),
),


],
),
],
),
),
),
),
);
}
}

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;
}
}

最佳答案

您需要在“_SliverAppBarDelegate”中更改“build”方法,如下所示。
请尝试在“容器”中提供背景颜色。

return new Container(
color: Colors.white, // Here
child: _tabBar,
);

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,
child: _tabBar,
);
}

@override
bool shouldRebuild(_SliverAppBarDelegate oldDelegate) {
return false;
}
}
enter image description here

关于flutter - Sliverappbar与主体中的内容重叠( flutter ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63739392/

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