Mon projet Flutter a un fichier Utility.Dart et un fichier main.Dart. J'appelle les fonctions dans le fichier main.Dart mais il a des problèmes. Il affiche toujours "OK", je pense que le problème est que la classe utilitaire checkConnection () renvoie un futur type booléen.
main.Dart:
if (Utility.checkConnection()==false) {
Utility.showAlert(context, "internet needed");
} else {
Utility.showAlert(context, "OK");
}
utility.Dart:
import 'package:flutter/material.Dart';
import 'package:connectivity/connectivity.Dart';
import 'Dart:async';
class Utility {
static Future<bool> checkConnection() async{
ConnectivityResult connectivityResult = await (new Connectivity().checkConnectivity());
debugPrint(connectivityResult.toString());
if ((connectivityResult == ConnectivityResult.mobile) || (connectivityResult == ConnectivityResult.wifi)){
return true;
} else {
return false;
}
}
static void showAlert(BuildContext context, String text) {
var alert = new AlertDialog(
content: Container(
child: Row(
children: <Widget>[Text(text)],
),
),
actions: <Widget>[
new FlatButton(
onPressed: () => Navigator.pop(context),
child: Text(
"OK",
style: TextStyle(color: Colors.blue),
))
],
);
showDialog(
context: context,
builder: (_) {
return alert;
});
}
}
Dans les fonctions futures, vous devez renvoyer les résultats futurs, vous devez donc modifier le retour de:
return true;
À:
return Future<bool>.value(true);
Donc, la fonction complète avec un retour correct est:
static Future<bool> checkConnection() async{
ConnectivityResult connectivityResult = await (new Connectivity().checkConnectivity());
debugPrint(connectivityResult.toString());
if ((connectivityResult == ConnectivityResult.mobile) || (connectivityResult == ConnectivityResult.wifi)){
return Future<bool>.value(true);
} else {
return Future<bool>.value(false);
}
}