flutter中的AlertDialog有一个奇怪的问题来取消对话框。我使用下面的代码片段来关闭flutter文档中提到的对话框。
Navigator.of(dialogContext).pop();
但显示它是如何工作的,使应用程序进入非活动模式,并变成黑屏窗口。要让它再次工作,我必须干掉这个应用程序,然后重新启动。
下面是flutter中alertdialog的完整代码
Future<Null> _showDialogContactDial(context, Contact contactRecord) async {
return showDialog<Null>(
context: context,
barrierDismissible: true, // user must tap button!
builder: (BuildContext dialogContext) {
return new AlertDialog(
title: new Text('Confirm Number'),
content: new SingleChildScrollView(
child: new ListBody(
children: <Widget>[
new TextFormField(
maxLines: 1,
decoration: new InputDecoration(hintText: 'Number'),
keyboardType: TextInputType.number,
autofocus: false,
initialValue: contactRecord.phoneNumber.number,
),
],
),
),
actions: <Widget>[
new FlatButton(
child: new Text(
'Call',
style: TextStyle(color: Colors.black),
),
onPressed: () {
Navigator.of(dialogContext).pop();
_launchURL(
context);
},
),
new FlatButton(
color: Colors.red,
child: new Text('Close', style: TextStyle(color: Colors.white)),
onPressed: () {
Navigator.of(dialogContext).pop();
},
),
],
);
},
);
}
我还注意到它适用于一个按钮“Call”,没有任何问题,但不适用于取消警报对话框,正如您在两个按钮操作中看到的相同代码段。
只需添加rootnavigator:true
Navigator.of(dialogcon, rootNavigator: true).pop();