recordResumeTimer function
- {required RecordResumeTimerOptions options}
Resumes the recording timer if it is not already running and can be paused/resumed.
Returns true
if the timer was successfully resumed, otherwise false
.
Example usage:
recordResumeTimer(RecordResumeTimerOptions(
parameters: RecordResumeTimerParameters(
isTimerRunning: false,
canPauseResume: true,
recordElapsedTime: 60,
recordStartTime: DateTime.now().millisecondsSinceEpoch,
showAlert: (alert) => print(alert.message),
updateRecordStartTime: (time) => print("New start time: $time"),
updateRecordTimerInterval: (interval) => print("New interval: $interval"),
updateIsTimerRunning: (isRunning) => print("Is timer running: $isRunning"),
updateCanPauseResume: (canPause) => print("Can pause/resume: $canPause"),
getUpdatedAllParams: () => updatedParameters,
),
));
Implementation
Future<bool> recordResumeTimer(
{required RecordResumeTimerOptions options}) async {
var parameters = options.parameters.getUpdatedAllParams();
var recordStartTime = parameters.recordStartTime;
var recordTimerInterval = parameters.recordTimerInterval;
var isTimerRunning = parameters.isTimerRunning;
// Utility function to show an alert message
void showAlertMessage(String message) {
if (parameters.showAlert != null) {
parameters.showAlert!(
message: message,
type: 'danger',
duration: 3000,
);
}
}
// Logic to resume the timer
if (!parameters.isTimerRunning && parameters.canPauseResume) {
recordStartTime = DateTime.now().millisecondsSinceEpoch -
(parameters.recordElapsedTime * 1000);
parameters.updateRecordStartTime(recordStartTime);
recordTimerInterval =
Timer.periodic(const Duration(seconds: 1), (timer) async {
final optionsUpdate = RecordUpdateTimerOptions(
recordElapsedTime: parameters.recordElapsedTime,
recordStartTime: parameters.recordStartTime!,
updateRecordElapsedTime: parameters.updateRecordElapsedTime,
updateRecordingProgressTime: parameters.updateRecordingProgressTime);
recordUpdateTimer(options: optionsUpdate);
parameters = parameters.getUpdatedAllParams();
if (parameters.recordPaused ||
parameters.recordStopped ||
parameters.roomName == '' ||
parameters.roomName == null) {
timer.cancel();
parameters.updateRecordTimerInterval(null);
isTimerRunning = false;
parameters.updateIsTimerRunning(isTimerRunning);
parameters.updateCanPauseResume(false);
}
});
parameters.updateRecordTimerInterval(recordTimerInterval);
isTimerRunning = true;
parameters.updateIsTimerRunning(isTimerRunning);
parameters.updateIsTimerRunning(true);
parameters.updateCanPauseResume(false);
return true;
} else {
showAlertMessage(
'Can only pause or resume after 15 seconds of starting or pausing or resuming recording');
return false;
}
}