我构建了一个AlertDialog来显示加载,同时我对用户进行身份验证,当它完成后我弹出它。
Widget loadingDialog = new AlertDialog(
content: new Row(
children: <Widget>[
new CircularProgressIndicator(),
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: new Text("Loading..."),
),
],
),);
但是,如果用户点击对话框外,它会关闭。因此,当auth完成时,它仍会弹出一些东西(我猜是脚手架),打破了应用程序。 如何让Dialog不能关闭?
答案 0 :(得分:9)
showDialog
内有一个名为barrierDismissible
的属性。将此值设置为false将使您的AlertDialog无法通过单击外部关闭。
showDialog(
...
barrierDismissible: false,
...
答案 1 :(得分:0)
//用户定义功能 void _showloding(){
// flutter defined function
showDialog(
barrierDismissible: false, // JUST MENTION THIS LINE
context: context,
builder: (BuildContext context) {
// return object of type Dialog
return AlertDialog(
content: Padding(
padding: const EdgeInsets.all(20.0),
child: Container(height: 100,width: 100,child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Center(child: SizedBox(height: 50,width: 50,child: CircularProgressIndicator())),
Padding(
padding: const EdgeInsets.only(top: 20),
child: Center(child: Text("Processing")),
)
],
)),
)
);
},
);
}
答案 2 :(得分:0)
为了防止在按下后退按钮时关闭对话框,您还应该将 AlertDialog
(或任何其他小部件)包裹在 WillPopScope
中。
showDialog(
context: context,
barrierDismissible: false, // <-- Set this to false.
builder: (_) => WillPopScope(
onWillPop: () async => false, // <-- Prevents dialog dismiss on press of back button.
child: AlertDialog(...),
),
);