问题描述
Flutter和AlertDialog:加载后,我的应用程序不显示警报对话框。 即使在打印警报对话框之前和之后打印了2张,该对话框也被跳过。这是为什么?请帮助我。
{
'first_name': 'Toni','last_name': 'Stokes','assignments': [('assignment1',97),('assignment2',85),('assignment3',94),('assignment4',100)]
}
请查看我的代码,并告诉我出什么问题了。谢谢。我期待着您的回音。
解决方法
问题出在这里:
if (result) {
print('Before dialog');
showDialog(
context: context,builder: (BuildContext context) {
return AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(6.0))),content: Column(
mainAxisSize: MainAxisSize.min,children: <Widget>[
Container(
padding: EdgeInsets.symmetric(
vertical: 60,horizontal: 10),child: Text(
//'Please rate with star','평가해 주셔서 감사합니다!',style: TextStyle(
fontSize: 20,fontWeight: FontWeight.bold,),InkWell(
onTap: () {
Navigator.pop(context);
},child: Container(
alignment: Alignment.center,height: 50,//color: primaryColor,child: Text(
AppLocalizations.of(context)
.translate('OKAY'),style: TextStyle(
color: Colors.white,fontWeight:
FontWeight.bold),],);
},);
print('After dialog');
Navigator.pop(context);
} else {
print('Sth wrong');
}
您要显示对话框,然后将其弹出。确保仅在单击警报对话框上的按钮之后,添加 Navigator.pop(context)方法。因此,像这样重写代码:
if (result) {
print('Before dialog');
showDialog(
context: context,builder: (BuildContext context) {
return AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(6.0))),content: Column(
mainAxisSize: MainAxisSize.min,children: <Widget>[
Container(
padding: EdgeInsets.symmetric(
vertical: 60,child: Text(
//'Please rate with star',style: TextStyle(
fontSize: 20,InkWell(
onTap: () {
Navigator.pop(context);
},child: Container(
alignment: Alignment.center,child: Text(
AppLocalizations.of(context)
.translate('OKAY'),style: TextStyle(
color: Colors.white,fontWeight:
FontWeight.bold),);
},);
print('After dialog');
} else {
print('Sth wrong');
}
,
问题出在print('After dialog')
行之后。您正在执行Navigator.pop(context);
,这实际上是从导航堆栈中删除对话框。
扑朔迷离:
showDialog()
用于显示对话框。 Navigator.pop(context)
用于删除对话框