我是Flutter的初学者,在当前(第一个)项目中,我有一个警报,我想在下一行代码运行之前弹出。
如果我使用await
,我发现它随后要求用户在屏幕上(警报范围之外)点击才能使程序继续。有什么方法可以确保在继续操作之前无需敲击就可以确保警报存在?
这是我的提醒方法:
myAlert(BuildContext context) {
return showDialog<void>(
context: context,
builder: (BuildContext context) {
return new AlertDialog(
title: Text('Some text'),
);
},
);
}
我调用该方法,然后在下一行中调用另一个进行大量计算的方法:
myAlert(context);
compute();
两个方法都可以通过按下按钮来调用(我不知道这是否有任何意义,因此只需将其放在那里即可。)
我希望仅在警报出现后才调用compute()
。截至目前,compute()
在警报弹出之前开始运行。
谢谢!
答案 0 :(得分:0)
这有点令人困惑,但是如果要在创建对话框时运行计算,请在构建器中运行它(更好的选择可能是创建一个单独的小部件并在其initState中进行操作)。
myAlert(BuildContext context) {
return showDialog<void>(
context: context,
builder: (BuildContext context) {
return new MyAlertDialog();
},
);
}
my_alert_dialog.dart
class MyAlertDialog extends StatefulWidget {
@override
_MyAlertDialogState createState() => _MyAlertDialogState();
}
class _MyAlertDialogState extends State<MyAlertDialog> {
@override
void initState() {
compute()//HERE u can du your compute
super.initState();
}
@override
Widget build(BuildContext context) {
return //Build here your Dialog Content...
}
}
如果要等待对话框关闭然后执行计算,请使用await。
myAlert(BuildContext context) async{
return await showDialog<void>(
context: context,
builder: (BuildContext context) {
return new AlertDialog(
title: Text('Some text'),
);
},
);
}