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();
});
}
}