process method
Starts processing the sentence queue.
- Sentences are interpreted one by one
- Will pause if user interaction is required
- Automatically completes and resets if queue is done
Implementation
Future<void> process({
VoidCallback? onComplete,
VoidCallback? onInterrupted,
}) async {
if (_status == ProcessingStatus.processing) return;
_updateStatus(ProcessingStatus.processing);
while (_queue.isNotEmpty) {
if (_status == ProcessingStatus.cancelled) {
_handleInterruption(onInterrupted);
return;
}
while (_status == ProcessingStatus.paused) {
await Future.delayed(const Duration(milliseconds: 200));
}
final current = _queue.removeFirst();
_processingIndex++;
onProcessingIndexChanged?.call(_processingIndex);
if (interpreter != null) {
await interpreter!.interpret(current);
}
_notifySentencesChanged();
}
_finish(onComplete);
}