Flattern wie kann ich den Circularprogress-Indikator ausblenden oder schließen [duplizieren]
Dec 18 2020
Ich rufe einfach einige Daten von der API ab. Ich muss den Loader anzeigen, bis die API geladen ist. Das Problem ist, dass der Loader einwandfrei funktioniert, aber ich weiß nicht, wie ich ihn schließen kann.
Mein Code
Future<http.Response> _trySubmit3() async {
final isValid2 = _formKey3.currentState.validate();
FocusScope.of(context).unfocus();
if (isValid2) {
showDialog(
context: context,
builder: (BuildContext context) {
return Center(child: CircularProgressIndicator(
valueColor: new AlwaysStoppedAnimation<Color>(Color(0xff00abb5)),
),);
});
print(smsOTP.text);
print(userConfirmPassword.text);
var url = '123/set_password.php?email=${userEmail.text}&password=${userConfirmPassword.text}';
print(url);
http.Response res = await http.get(url,
headers: <String, String>{
'token': 'my token'
},
);
var data = json.decode(res.body.toString());
print(data);
print(data['status']);
if(data['status'].toString() == "success"){
// I need to close the loader here
}
}
Antworten
UmaizKhan Dec 18 2020 at 19:02
Willkommen bei Stackoverflow :)
Sie können dies mit diesem Trick Navigator.pop (Kontext) tun. Ich denke, Sie müssen sich verstecken, wenn es erfolgreich ist, wenn Sie dies tun können
if(data['status'].toString() == "success"){
Navigator.pop(context)
}
StefanoA. Dec 18 2020 at 19:00
Wenn Sie das, das Dialog
das enthält CircularProgressIndicator
, sofort nach Abschluss aller Vorgänge schließen möchten, können Sie den folgenden Code verwenden:
Navigator.pop(context);
Was in Ihrem Beispiel implementiert aussehen würde:
Future<http.Response> _trySubmit3() async {
final isValid2 = _formKey3.currentState.validate();
FocusScope.of(context).unfocus();
if (isValid2) {
showDialog(
context: context,
builder: (BuildContext context) {
return Center(child: CircularProgressIndicator(
valueColor: new AlwaysStoppedAnimation<Color>(Color(0xff00abb5)),
),);
});
print(smsOTP.text);
print(userConfirmPassword.text);
var url = '123/set_password.php?email=${userEmail.text}&password=${userConfirmPassword.text}';
print(url);
http.Response res = await http.get(url,
headers: <String, String>{
'token': 'my token'
},
);
var data = json.decode(res.body.toString());
print(data);
print(data['status']);
if(data['status'].toString() == "success"){
Navigator.pop(context); // closing the Dialog with the CircularProgressIndicator
}
}
}