Tengo esta función que devuelve el valor "SharedPreference" almacenado en ella.

  Future<bool> getLoginStatus() async {
    final prefs = await SharedPreferences.getInstance();
    final loggedInStatus = prefs.getBool("loggedInStatus");

    if (loggedInStatus == null) {
      return false;
    }
    return loggedInStatus;
  }

La función anterior está en la clase llamada "Constants.dart". Cuando hago la prueba de extracción de valor de la función "getLoginStatus ()" mediante una simple impresión en diferentes clases.

 print("Login status : " + Constants().getLoginStatus().toString());

Me da a continuación como salida. ¿Por qué "Instancia de 'Futuro'"? ¿Por qué no simple o verdadero o falso?

I/flutter (19683): Login status : Instance of 'Future<bool>'
0
Faizan Kamal 28 abr. 2020 a las 22:21

3 respuestas

La mejor respuesta

Como su getLoginStatus () es asíncrono y devolverá un valor bool en el futuro. Entonces, para obtener el valor que tiene que esperar para que el proceso lo devuelva.

Entonces el Código correcto para recuperar el valor sería:

bool loggedInStatus = await Constants().getLoginStatus();
print(loggedInStatus);
1
harpreet seera 28 abr. 2020 a las 19:59

Puedes obtener datos usando waitit.

var data  = await Constants().getLoginStatus();
print(data);
0
Viren V Varasadiya 28 abr. 2020 a las 19:28
getLoginStatus().then((val){ print("Login status : $val"});

La función then debería usarse con Futures para acceder al valor devuelto por un futuro.

1
Wilson O Wilson 28 abr. 2020 a las 19:30