在Flutter中,我在异步任务期间为loader编写简单的对话框。当我触摸外面的对话被解雇时,我该如何阻止这种行为?
代码
showDialog(
context: context,
builder: (_) => new Dialog(
child: new Container(
alignment: FractionalOffset.center,
height: 80.0,
padding: const EdgeInsets.all(20.0),
child: new Row(
mainAxisSize: MainAxisSize.min,
children: [
new CircularProgressIndicator(),
new Padding(
padding: new EdgeInsets.only(left: 10.0),
child: new Text("Loading"),
),
],
),
),
));
任何帮助将不胜感激,谢谢你。
答案 0 :(得分:14)
有一个名为barrierDismissible
的属性,您可以传递给showDialog
;这使得对话框在外部点击时不被允许
showDialog(
barrierDismissible: false,
builder: ...
)
答案 1 :(得分:6)
如果要防止在按下后退按钮时关闭对话框,请参考以下代码。您必须将AlertDialog包装在WillPopScope小部件中,并使onWillPop属性值为空函数。
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: (){},
child:AlertDialog(
title: new Text("Alert Title"),
content: new SingleChildScrollView(
child: Container(),),
actions: <Widget>[
new FlatButton(
child: new Text("Close"),
onPressed: () {
},
),
],
)
)
},
);
答案 2 :(得分:3)
只需添加这一行
barrierDismissible: false,
喜欢
showDialog(
barrierDismissible: false,
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text(
"Classes",
style: TextStyle(
fontSize: 24, color: Colors.black, fontFamily: 'intel'),
),
content: setupAlertDialoadClassList(
context, listClasses, Icons.class__outlined, 0),
);
});