【发布时间】:2020-03-19 15:52:03
【问题描述】:
如果这是一个菜鸟问题或代码看起来太基本,请原谅我,我是新手。 我已经完成了相当多的谷歌搜索,但我还没有找到解决方案。
一旦未来功能启动,我想显示加载警报。处理 API 请求/响应时,如果发生错误,应在 showErrorDialog 中显示,并且 LoadingDialog 应自动关闭。
现在,ErrorDialog 显示并可以使用其按钮将其关闭,但 LoadingDialog 不会被关闭。
我可以使用 Future.delayed 来做到这一点,但这只是一种解决方法,它有太多可变的结果。这是虚拟代码:
import 'package:flutter/material.dart';
class RandomScreen extends StatefulWidget {
@override
_RandomScreenState createState() => _RandomScreenState();
}
class _RandomScreenState extends State<RandomScreen> {
Future<void> _submitApiRequest() async {
try {
_showLoadingAlert();
//processing the API request/response here.
} catch (error) {
_showErrorDialogue(error.toString());
}
}
void _showErrorDialogue(String errorMessage) {
showDialog(
context: context,
builder: (ctx) => Dialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),
child: Column(
children: <Widget>[
Text(errorMessage),
FlatButton(
onPressed: () => Navigator.of(context).pop(),
child: Text(
'Dismiss',
),
),
],
),
),
);
}
void _showLoadingAlert() {
showDialog(
context: context,
builder: (ctx) => CircularProgressIndicator(),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Random Screen'),
),
body: Center(
child: RaisedButton(
onPressed: _submitApiRequest,
child: Text('Submit'),
),
),
);
}
}
【问题讨论】:
-
相关,请检查答案。 stackoverflow.com/a/60760433/7532298
-
哇,我所要做的就是在显示下一个对话框之前弹出它。很高兴看到我只是想多了。谢谢@SumanMaharjan,这解决了我的问题。
-
如果解决了就接受这个答案:D
-
当然,我做到了,但我的声誉还很低,所以它不会显示