Flutter Comment puis-je masquer ou ignorer l'indicateur de progression circulaire [dupliquer]
Dec 18 2020
Je récupère simplement des données de l'API, ce dont j'ai besoin est d'afficher le chargeur jusqu'à ce que l'API soit chargée. Le problème est que le chargeur fonctionne correctement mais je ne sais pas comment le fermer.
Mon 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
}
}
Réponses
UmaizKhan Dec 18 2020 at 19:02
Bienvenue dans Stackoverflow :)
Vous pouvez le faire par cette astuce Navigator.pop (contexte). Je pense que vous devez vous cacher quand son succès est si condition que vous pouvez faire comme ça
if(data['status'].toString() == "success"){
Navigator.pop(context)
}
StefanoA. Dec 18 2020 at 19:00
Si vous cherchez à ignorer le Dialog
qui contient le CircularProgressIndicator
, immédiatement après que toutes les opérations ont été terminées, vous pouvez utiliser le code suivant:
Navigator.pop(context);
Ce qui, implémenté dans votre exemple, ressemblerait à:
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
}
}
}