如何在循环中使用 Future/Async 函数?(飞镖/扑)

Aet*_*her 1 asynchronous async-await dart firebase flutter

        String random_username ;
        bool available = false;
        int n = 0;
        do{
          random_username = SuperHero.random()+(n.toString());
          n = n+1;
          print(random_username);
          checkUsernameAvailable(random_username).then((value){
            available = value;
          });
        }while(!available);
Run Code Online (Sandbox Code Playgroud)

我想要做的是当新用户在 Firebase Auth 中注册时,我想为用户创建一个随机用户名,以后可以更改。这段代码应该生成一个用户名,检查它是否已经在 firebase 数据库中。如果没有,则退出循环,否则添加后缀号并重试。(我错误地将名称生成器放入循环中,因此每次它都会获得一个新名称,现在还可以)。如果没有匹配项,即可用,则函数checkUsernameAvailable返回“true”。反之亦然。

问题是循环会一直持续下去。也许这是由于异步方法,即checkUsernameAvailable。请帮忙。

Aug*_*n R 5

您可以使用Future.doWhile()方法,它重复执行一个操作,直到它返回false

Future.doWhile(() async {
  final random_username = SuperHero.random() + (n.toString());
  n = n + 1;
  print(random_username);
  return !(await checkUsernameAvailable(random_username));
});
Run Code Online (Sandbox Code Playgroud)