Это, вероятно, только я, но асинхронное программирование во флаттере кажется абсолютным кошмаром. Что-то действительно простое в javascript / typcript просто кажется неоправданно сложным. например, я пытаюсь создать простую функцию, которая проверяет, прошел ли пользователь аутентификацию:
Future<bool> isLoggedIn() async {
var user = await FirebaseAuth.instance.currentUser();
return user == null ? false : true;
}
, а затем использует эту функцию в сценарии, подобном следующему:
Widget _buildChild() async {
var auth = await user.isLoggedIn();
if (auth) {
return new Navigation();
} else {
return new LoginUI();
}
}
Нотогда вторая функция также должна возвращать будущее?
Функции, отмеченные как «асинхронные», должны иметь тип возвращаемого значения, присваиваемый «Future».
, используя вместо этого then ()ожидание тоже не работает. Я сталкивался с этой проблемой несколько раз, когда использовал асинхронное программирование в синхронном контексте. Может быть, это просто то, что он выглядит и чувствует себя очень похожим на Обещания, что я полностью скучаю по его функциональности из документов.