Flutter 颤振:如何放置滑动条底部的TabBar?
我正在尝试在SliveAppBar下面创建两个选项卡,如下所示: 但是,当我将Flutter 颤振:如何放置滑动条底部的TabBar?,flutter,tabbar,sliverappbar,Flutter,Tabbar,Sliverappbar,我正在尝试在SliveAppBar下面创建两个选项卡,如下所示: 但是,当我将选项卡栏包含在滑动条的底部:中时,它与滑动条重叠如下: 这是我的代码: (我试图尽量减少代码,可能会意外删除一些括号。) class DetailScreen扩展了无状态小部件{ 返回材料PP( 家:脚手架( 正文:DefaultTabController( 长度:2, 子:自定义滚动视图( 物理:弹跳CrollPhysics(), 条子:[ 滑杆( 底部:选项卡栏( 未选择的标签颜色:Colors.white,
选项卡栏
包含在滑动条
的底部:
中时,它与滑动条
重叠如下:
这是我的代码:
(我试图尽量减少代码,可能会意外删除一些括号。)
class DetailScreen扩展了无状态小部件{
返回材料PP(
家:脚手架(
正文:DefaultTabController(
长度:2,
子:自定义滚动视图(
物理:弹跳CrollPhysics(),
条子:[
滑杆(
底部:选项卡栏(
未选择的标签颜色:Colors.white,
labelColor:Colors.black,
indicatorSize:TabBarIndicatorSize.label,
指标:盒子装饰(
颜色:颜色,白色,
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(20),
右上角:常数半径。圆形(20),
),
),
选项卡:[
标签(
子:容器(
装饰:盒子装饰(
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(20.0),
右上角:常数半径。圆形(20.0),
)),
子对象:对齐(
对齐:对齐.center,
子:文本(
“回收”,
),
),
),
),
标签(
子:容器(
宽度:MediaQuery.of(context).size.width*0.5,
装饰:盒子装饰(
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(20.0),
右上角:常数半径。圆形(20.0),
)),
子对象:对齐(
对齐:对齐.center,
子项:文本(“向上循环”),
),
))
],
),
扩展高度:250.0,
错,,
浮动:假,
背景颜色:颜色。透明,
onStretchTrigger:(){
//用于拉伸的函数回调
返回;
},
flexibleSpace:FlexibleSpaceBar(
//向下拖动时模糊图像
拉伸模式:[
StretchMode.zoomBackground,
StretchMode.blurBackground,
StretchMode.fadeTitle,
],
标题:对,
//头衔
标题:专栏(
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
正文(
“$imagename”,
样式:TextStyle(
字体大小:40.0,
fontFamily:“Rajdhani”,
fontWeight:fontWeight.w700,
颜色:颜色。白色),
textAlign:textAlign.center,
),
],
),
背景:集装箱(
装饰:mybox装饰(imagename),
),
),
),
银条填充(…),
),
),
],
),
),
),
);
}
}
}
class DetailScreen extends StatelessWidget {
return MaterialApp(
home: Scaffold(
body: DefaultTabController(
length: 2,
child: CustomScrollView(
physics: BouncingScrollPhysics(),
slivers: <Widget>[
SliverAppBar(
bottom: TabBar(
unselectedLabelColor: Colors.white,
labelColor: Colors.black,
indicatorSize: TabBarIndicatorSize.label,
indicator: BoxDecoration(
color: Colors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(20),
topRight: const Radius.circular(20),
),
),
tabs: [
Tab(
child: Container(
decoration: BoxDecoration(
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(20.0),
topRight: const Radius.circular(20.0),
)),
child: Align(
alignment: Alignment.center,
child: Text(
"Recycle",
),
),
),
),
Tab(
child: Container(
width: MediaQuery.of(context).size.width * 0.5,
decoration: BoxDecoration(
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(20.0),
topRight: const Radius.circular(20.0),
)),
child: Align(
alignment: Alignment.center,
child: Text("Upcycle"),
),
))
],
),
expandedHeight: 250.0,
pinned: false,
floating: false,
backgroundColor: Colors.transparent,
onStretchTrigger: () {
// Function callback for stretch
return;
},
flexibleSpace: FlexibleSpaceBar(
//blur image when dragged down
stretchModes: <StretchMode>[
StretchMode.zoomBackground,
StretchMode.blurBackground,
StretchMode.fadeTitle,
],
centerTitle: true,
//title
title: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
'$imagename',
style: TextStyle(
fontSize: 40.0,
fontFamily: 'Rajdhani',
fontWeight: FontWeight.w700,
color: Colors.white),
textAlign: TextAlign.center,
),
],
),
background: Container(
decoration: MyBoxDecoration(imagename),
),
),
),
SliverPadding(...),
),
),
],
),
),
),
);
}
}
}