flutter dialog中返回值
直接看代码注释:
String type = listType[0];
int _index = 0;
return await showModalBottomSheet<String>(
context: context,
isScrollControlled: true,
backgroundColor: Colors.white,
// clipBehavior: Clip.antiAliasWithSaveLayer,
// backgroundColor: Colors.transparent,
// barrierColor: Colors.transparent,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
builder: (context) {
**这里使用StatefulBuilder是因为需要进行刷新弹窗内容**
return StatefulBuilder(
builder: (context, StateSetter status) {
return Container(
height: ScreenUtil().setHeight(800),
child: Row(
children: [
Container(
margin: EdgeInsets.only(top: 20),
color: colorLight1,
width: 70.0,
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: List.generate(
listType.length,
(index) => GestureDetector(
onTap: () {
type = listType[index];
status(() {
_index = index;
});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
_index == index
? Container(
alignment: Alignment.center,
width: 6.0,
height: 20,
decoration: BoxDecoration(
color: Colors.grey),
)
: Container(
alignment: Alignment.center,
width: 6.0,
height: 20,
),
Container(
padding: EdgeInsets.only(top: 10),
width: 60,
height: 40,
decoration:
BoxDecoration(color: colorLight1),
child: Text(
listType[index],
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
color: Colors.grey[700]),
)),
],
))),
),
),
),
Expanded(
child: Container(
margin: EdgeInsets.only(top: 20),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(type),
),
Wrap(
children: List.generate(
13,
(index) => GestureDetector(
onTap: () {
**这里是返回属性的关键地方,关闭弹窗并且把这个值返回回去**
Navigator.pop(context,value)
},
child: Container(
alignment: Alignment.center,
margin: EdgeInsets.all(5.0),
color: colorLight1,
width: ScreenUtil().setWidth(110),
height: ScreenUtil().setHeight(65),
child: Text("酒吧",
style: TextStyle(
fontSize: 10,
)),
),
)),
)
],
),
),
)
],
),
);
},
);
});
}```