pickAudio method

dynamic pickAudio()

Implementation

pickAudio() async {
  setOnGoingUserGone();
  if (Platform.isIOS) {
    FilePickerResult? result = await FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: [
        'wav',
        'aiff',
        'alac',
        'flac',
        'mp3',
        'aac',
        'wma',
        'ogg'
      ],
    );
    if (result != null && File(result.files.single.path!).existsSync()) {
      debugPrint(result.files.first.extension);
      if (MediaUtils.checkFileUploadSize(
          result.files.single.path!, Constants.mAudio)) {
        AudioPlayer player = AudioPlayer();
        // player.setUrl(result.files.single.path!);
        player.setSourceDeviceFile(
            result.files.single.path ?? Constants.emptyString);
        player.onDurationChanged.listen((Duration duration) {
          LogMessage.d("", 'max duration: ${duration.inMilliseconds}');
          Future.delayed(const Duration(seconds: 1), () {
            filePath.value = (result.files.single.path!);
            sendAudioMessage(
                filePath.value, false, duration.inMilliseconds.toString());
          });
        });
      } else {
        toToast(getTranslated("mediaMaxLimitRestriction")
            .replaceAll("%d", "${MediaUtils.maxAudioFileSize}"));
      }
      setOnGoingUserAvail();
    } else {
      // User canceled the picker
      setOnGoingUserAvail();
    }
  } else {
    ///sometimes FilePicker's path not receiving with its file extension in Android
    ///so we are adding this below method internally
    await Mirrorfly.openAudioFilePicker().then((value) {
      if (value != null) {
        if (MediaUtils.checkFileUploadSize(value, Constants.mAudio)) {
          AudioPlayer player = AudioPlayer();
          // player.setUrl(value);
          player.setSourceDeviceFile(value);
          player.onDurationChanged.listen((Duration duration) {
            LogMessage.d("", 'max duration: ${duration.inMilliseconds}');
            Future.delayed(const Duration(seconds: 1), () {
              filePath.value = (value);
              sendAudioMessage(
                  filePath.value, false, duration.inMilliseconds.toString());
            });
          });
        } else {
          toToast(getTranslated("mediaMaxLimitRestriction")
              .replaceAll("%d", "${MediaUtils.maxAudioFileSize}"));
        }
      } else {
        setOnGoingUserAvail();
      }
    }).catchError((onError) {
      LogMessage.d("openAudioFilePicker", onError);
      setOnGoingUserAvail();
    });
  }
}