如果这是一个菜鸟问题或代码看起来太基本,请原谅我,我是新手。我已经完成了相当多的谷歌搜索,但我还没有找到解决方案。
一旦未来功能开始,我想显示加载警报。处理 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'),
),
),
);
}
}