Flutter, ¿cómo puedo ocultar o descartar el indicador de progreso circular [duplicar]
Dec 18 2020
Simplemente estoy obteniendo algunos datos de la API, lo que necesito es mostrar el cargador hasta que se cargue la API. El problema es que el cargador funciona bien, pero no sé cómo puedo cerrarlo.
Mi código
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
}
}
Respuestas
UmaizKhan Dec 18 2020 at 19:02
Bienvenido a Stackoverflow :)
Puede hacer esto con este truco Navigator.pop (contexto). Creo que debes esconderte cuando sea exitoso en la condición de que puedas hacer esto.
if(data['status'].toString() == "success"){
Navigator.pop(context)
}
StefanoA. Dec 18 2020 at 19:00
Si está buscando descartar el Dialog
que contiene el CircularProgressIndicator
, inmediatamente después de que se hayan completado todas las operaciones, puede usar el siguiente código:
Navigator.pop(context);
Que, implementado en su ejemplo, se vería así:
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
}
}
}