我对flutter和开发是个新手,我的问题是如何在函数中使用do/while,while循环来进行视频调用。我用的是Agora.sdk和Firestore。这是一个类似于Be my eyes的应用程序,但有点扭曲。
首先,有两个独立的用户:志愿者(不打任何电话(和视障人士(打电话(。
所以,我设法让志愿者在上面随机使用这个代码:
onPressed:((异步{选择志愿者(oneVolunteer(;wait Permissions.cameraAndMicrophonePermissionsGranted((?CallUtils.dial(发件人:发件人,致:oneVolunteer,context:上下文,):Navigator.pop(上下文(;},
它是有效的,但现在我需要这样做,如果给我一定的时间,比如30秒,它会再次调用selectionVolunteers((,依此类推。如果任何志愿者注册了答案,或者在…之后。。5次迭代。我不知道如何使用定时器。。所以…我创建了这个代码:
searchAlgorithm(oneVolunteer) async {
int tries = 0
do {
selectingVolunteers(oneVolunteer);
await Permissions.cameraAndMicrophonePermissionsGranted()
? CallUtils.dial(from: sender, to: oneVolunteer, context: context)
: Navigator.pop(context);
if (startTimer()) {
tries++;
selectingVolunteers(oneVolunteer);
await Permissions.cameraAndMicrophonePermissionsGranted()
? CallUtils.dial(from: sender, to: oneVolunteer, context: context)
: Navigator.pop(context);
}
} while (tries == 5);
}
startTimer() {
const oneSec = const Duration(seconds: 30);
_timer = new Timer.periodic(
oneSec,
(Timer timer) => setState(
() {
if (_start < 1) {
timer.cancel();
} else {
_start = _start - 1;
}
},
),
);
}
但有一件事告诉我它不会起作用:(
我真的很感谢大家的帮助!谢谢
因此,do-while循环可能无法工作的原因是您没有正确定义条件。
当您将tries
声明为0时,编译器会将该值带入该循环并在其中运行代码,但当它检查条件tries==5
时(在这种情况下这不是真的(,因此循环中断,代码只执行一次(在do-while循环的情况下这是默认的(。
所以要执行这个do-white循环5次,你可以执行这个
do{
..... // Your code
tries++;
}while(tries<5)
这样,每当执行这个do-while循环时,tries
将从0变为4,并且do-whil循环中的代码将执行5次。