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。请帮忙。
您可以使用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)
归档时间: |
|
查看次数: |
1022 次 |
最近记录: |