一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
效果:
设计图
本章学习目标
1.编写选择弹框界面
写完之后iphone刘海屏没有预留底部安全距离的问题先不解决。
1.代码写在详情页面商品第一页(ProductContentFirst).
导入
import '../../widget/JDButton.dart';
_attrBottomSheet() {
showModalBottomSheet(
context: context,
builder: (contex) {
return GestureDetector(
//解决showModalBottomSheet点击消失的问题
onTap: () {
return false;
},
child: Stack(
children: <Widget>[
Container(
padding: EdgeInsets.all(ScreenAdaper.width(20)),
child: ListView(
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Wrap(
children: <Widget>[
Container(
width: ScreenAdaper.width(100),
child: Padding(
padding: EdgeInsets.only(
top: ScreenAdaper.height(22)),
child: Text("颜色: ",
style: TextStyle(
fontWeight: FontWeight.bold)),
),
),
Container(
width: ScreenAdaper.width(610),
child: Wrap(
children: <Widget>[
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
],
),
)
],
),
Wrap(
children: <Widget>[
Container(
width: ScreenAdaper.width(100),
child: Padding(
padding: EdgeInsets.only(
top: ScreenAdaper.height(22)),
child: Text("风格: ",
style: TextStyle(
fontWeight: FontWeight.bold)),
),
),
Container(
width: ScreenAdaper.width(610),
child: Wrap(
children: <Widget>[
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
],
),
)
],
),
Wrap(
children: <Widget>[
Container(
width: ScreenAdaper.width(100),
child: Padding(
padding: EdgeInsets.only(
top: ScreenAdaper.height(22)),
child: Text("尺寸: ",
style: TextStyle(
fontWeight: FontWeight.bold)),
),
),
Container(
width: ScreenAdaper.width(610),
child: Wrap(
children: <Widget>[
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
Container(
margin: EdgeInsets.all(10),
child: Chip(
label: Text("白色"),
padding: EdgeInsets.all(10),
),
),
],
),
)
],
)
],
)
],
),
),
Positioned(
bottom: 0,
width: ScreenAdaper.width(750),
height: ScreenAdaper.height(76),
child: Row(
children: <Widget>[
Expanded(
flex: 1,
child: Container(
margin: EdgeInsets.fromLTRB(10, 0, 0, 0),
child: JdButton(
color: Color.fromRGBO(253, 1, 0, 0.9),
text: "加入购物车",
cb: () {
print('加入购物车');
},
),
),
),
Expanded(
flex: 1,
child: Container(
margin: EdgeInsets.fromLTRB(10, 0, 10, 0),
child: JdButton(
color: Color.fromRGBO(255, 165, 0, 0.9),
text: "立即购买",
cb: () {
print('立即购买');
},
)),
)
],
),
)
],
),
);
});
}
2.调用上面写好的方法,筛选添加点击方法
//筛选
Container(
margin: EdgeInsets.only(top: 10),
height: ScreenAdaper.height(80),
child: InkWell(
onTap: (){
_attrBottomSheet();
},
child: Row(
children: <Widget>[
Text("已选: ", style: TextStyle(fontWeight: FontWeight.bold)),
Text("115,黑色,XL,1件")
],
),
),
),