startRecording method

dynamic startRecording(
  1. BuildContext context
)

Implementation

startRecording(BuildContext context) async {
  if (playingChat != null) {
    playingChat!.mediaChatMessage!.isPlaying = false;
    playingChat = null;
    // player.stop();
    chatList.refresh();
  }
  var busyStatus = !profile.isGroupProfile.checkNull()
      ? await Mirrorfly.isBusyStatusEnabled()
      : false;
  if (!busyStatus.checkNull()) {
    if (context.mounted) {
      AppPermission.askNotificationPermission(context).then((value) async {
        // var permission = await AppPermission.getStoragePermission(context: context);
        var permission = await AppPermission.checkAndRequestPermissions(
            permissions: [Permission.microphone],
            permissionIcon: audioPermission,
            permissionContent: Constants.audioPermission,
            permissionPermanentlyDeniedContent:
                Constants.microPhonePermissionDenied,
            context: context);
        if (permission) {
          // if (await record.hasPermission()) {
          record = AudioRecorder();
          timerInit("00:00");
          isAudioRecording(Constants.audioRecording);
          startTimer();
          await record.start(
            const RecordConfig(),
            path:
                "$audioSavePath/audio_${DateTime.now().millisecondsSinceEpoch}.m4a",
            // ///If Change the Encode Format, kindly keep in mind to check the iOS record and send Audio.
            // encoder: AudioEncoder.aacLc,
            // bitRate: 128000,
            // samplingRate: 44100,
          );
          Future.delayed(const Duration(seconds: 300), () {
            if (isAudioRecording.value == Constants.audioRecording) {
              stopRecording();
            }
          });
          // }
        }
      });
    }
  } else {
    //show busy status popup
    if (context.mounted) showBusyStatusAlert(startRecording, context);
  }
}