web-dev-qa-db-fra.com

Flutter Future <bool> vs type bool

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");
} 

enter image description here

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;
        });
  }
}
7
GPH

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);
    }
  }
0
AnasSafi