web-dev-qa-db-fra.com

Flutter comment utiliser la valeur de retour future comme si variable

Je veux obtenir la valeur de retour Future et l'utiliser comme variable. J'ai cette fonction Future

  Future<User> _fetchUserInfo(String id) async {
    User fetchedUser;
    await Firestore.instance
        .collection('user')
        .document(id)
        .get()
        .then((snapshot) {
      final User user = User(snapshot);
      fetchedUser = user;
    });
    return fetchedUser;
  }

Et je veux obtenir de la valeur comme ça

final user = _fetchUserInfo(id);

Mais quand j'ai essayé d'utiliser comme ça

new Text(user.userName);

Dart ne reconnaît pas la classe User. Il indique dynamic.
Comment puis-je obtenir la valeur de retour et l'utiliser?
Est-ce que je me trompe d'abord? Toute aide est appréciée!

7
TwoSan

Vous pouvez simplifier le code:

Future<User> _fetchUserInfo(String id) async {
    User fetchedUser;
    var snapshot = await Firestore.instance
        .collection('user')
        .document(id)
        .get();
    return User(snapshot);
  }

vous devez également asynchroniser/attendre pour obtenir la valeur

void foo() async {
  final user = await _fetchUserInfo(id);
}
16
Günter Zöchbauer

utiliser comme ça

var username;
dbHelper.getUsers().then((user) {
  username = user.getName;
});

cette fonction renvoie la valeur future

dbHelper.getUsers()

c'est écrit comme ça

getUsers() async { .... }
1
Rashid Iqbal