Flutter 采坑Dialog中Dialog 返回值问题
2019-03-05 本文已影响0人
wasdzy111
在Dialog A中再弹出一个Dialog B ,获得B中的值 去修改A界面上数据
![](https://img.haomeiwen.com/i5263054/72e8489582f1a6e3.png)
如图:点击图片中日期 ,弹出选择日期组件
![](https://img.haomeiwen.com/i5263054/f3b0a9b8e92127db.png)
点击确定按钮 图1 中的日期,通过
setState(() {
dateStr =
'${date.year}/${date.month}/${date.day}';
});
修改是失败的,正确姿势:
showDialog(
context: context,
builder: (BuildContext context) {
return StatefulBuilder(builder: (context, state) {
return AlertDialog(
content: Container(
height: 160,
child: Column(
children: <Widget>[
Text('你选中 :${v}'),
TextField(
decoration: InputDecoration(hintText: '金额'),
),
TextField(
decoration: InputDecoration(hintText: '备注'),
),
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 12),
child: GestureDetector(
child: Container(
width: double.infinity,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('日期 :'),
Expanded(
flex: 1,
child: Text('${dateStr}'),
)
],
),
),
onTap: () {
DatePicker.showDatePicker(context,
showTitleActions: true, onChanged: (date) {
print('变更:${date}');
}, onConfirm: (date) {
print('选择:${date}');
state(() {
dateStr =
'${date.year}/${date.month}/${date.day}';
});
},
currentTime: DateTime.now(),
locale: LocaleType.zh);
},
),
)
],
),
),
actions: <Widget>[
FlatButton(
onPressed: () {
Navigator.of(context).pop('-1');
this.dateStr = '今天';
},
child: Text('取消')),
FlatButton(
onPressed: () {
Navigator.of(context).pop('1');
},
child: Text('确定')),
],
);
});
});
重点:StatefulBuilder 、 刷新方法state()