Получение результата метода Future <T>flutter - PullRequest
1 голос
/ 07 марта 2019

У меня есть метод

Future<FirebaseUser> getCurrentUser() async {
    FirebaseUser user = await _firebaseAuth.currentUser();
    return user;
}

Я хочу иметь возможность вызвать его в каком-то другом модуле, выполнив:

if (class.getCurrentUser() != null) {
    // Do something
}

Я не могу понять, как получить фактическое значение, а не объект Future, хранящий значение. Например, в C ++ я могу просто сделать future.get(), который заблокирует и вернет мне значение. Есть ли эквивалент во флаттере? Я новичок в этом языке, искал несколько часов и, похоже, не могу найти решения именно этой проблемы.

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Из вашего кода, кажется, вам действительно нужно только 1 await:

Future<FirebaseUser> getCurrentUser() async {
    return _firebaseAuth.currentUser();
}
if (await class.getCurrentUser() != null) {
    // Do something
}
1 голос
/ 07 марта 2019

Вы должны ожидать результата в вызове вашего метода, например:

FirebaseUser currentUser = await class.getCurrentUser();
if (currentUser != null) {
    // Do something
}
...