在Dialog A中再彈出一個Dialog B ,獲得B中的值 去修改A界面上數(shù)據(jù)
如圖:點擊圖片中日期 ,彈出選擇日期組件
點擊確定按鈕 圖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()