Я новичок в трепетании и развитии в целом, и у меня есть вопрос, касающийся использования do / while и l oop в функции для совершения видеозвонка. Я использую Agora.sdk для этого и Firestore. Это приложение, похожее на «Будь мне глазами», но с небольшим поворотом.
Во-первых, есть два отдельных пользователя: волонтер (который не выполняет никаких вызовов) и слабовидящий (который делает вызов).
Итак, мне удалось получить добровольцев случайным образом, используя этот код на нажатом:
onPressed: () asyn c {selectionVolunteers (oneVolunteer); await Permissions.cameraAndMicrophonePermissionsGranted ()? CallUtils.dial (от: отправитель, до: oneVolunteer, контекст: контекст,): Navigator.pop (контекст); },
Это работает, но теперь мне нужно, чтобы при задании определенного времени, скажем, 30se c, он снова вызывал selectionVolunteers () и т. Д. Ultil любой из зарегистрированных добровольцев ответы или после сказать .. 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;
}
},
),
);
}
Но что-то подсказывает мне, что это не сработает: (
Я действительно Спасибо за помощь! Спасибо!