pickAudio method

dynamic pickAudio(
  1. BuildContext context
)

Implementation

pickAudio(BuildContext context) async {
  setOnGoingUserGone();
  if (Platform.isIOS) {
    FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: [
        'wav',
        'aiff',
        'alac',
        'flac',
        'mp3',
        'aac',
        'wma',
        'ogg'
      ],
    ).then((result) {
      if (result != null && File(result.files.single.path!).existsSync()) {
        debugPrint(result.files.first.extension);
        if (checkFileUploadSize(
            result.files.single.path!, Constants.mAudio)) {
          AudioPlayer player = AudioPlayer();

          player.setSourceDeviceFile(
              result.files.single.path ?? Constants.emptyString);
          player.onDurationChanged.listen((Duration duration) {
            mirrorFlyLog(Constants.emptyString,
                'max duration: ${duration.inMilliseconds}');
            Future.delayed(const Duration(seconds: 1), () {
              filePath.value = (result.files.single.path!);
              sendAudioMessage(filePath.value, false,
                  duration.inMilliseconds.toString(), context);
            });
          });
        } else {
          toToast(Constants.mediaMaxLimitRestriction
              .replaceAll("%d", "${Constants.maxAudioFileSize}"));
        }
      } else {
        // User canceled the picker
      }
      setOnGoingUserAvail();
    });
  } else {
    await Mirrorfly.openAudioFilePicker().then((value) {
      if (value != null) {
        if (checkFileUploadSize(value, Constants.mAudio)) {
          AudioPlayer player = AudioPlayer();
          player.setSourceDeviceFile(value);
          player.onDurationChanged.listen((Duration duration) {
            mirrorFlyLog("", 'max duration: ${duration.inMilliseconds}');
            Future.delayed(const Duration(seconds: 1), () {
              filePath.value = (value);
              sendAudioMessage(filePath.value, false,
                  duration.inMilliseconds.toString(), context);
            });
          });
        } else {
          toToast(Constants.mediaMaxLimitRestriction
              .replaceAll("%d", "${Constants.maxAudioFileSize}"));
        }
      } else {
        setOnGoingUserAvail();
      }
    }).catchError((onError) {
      LogMessage.d("openAudioFilePicker", onError);
      setOnGoingUserAvail();
    });
  }
}