trim method

  1. @override
Future<File> trim({
  1. required File inputFile,
  2. required Directory outputDirectory,
  3. required String fileName,
  4. required AudioTrimTime time,
  5. required AudioFileType fileType,
})
override

Implementation

@override
Future<File> trim({
  required File inputFile,
  required Directory outputDirectory,
  required String fileName,
  required AudioTrimTime time,
  required AudioFileType fileType,
}) async {
  if (Platform.isIOS && fileType == AudioFileType.mp3) {
    throw AudioTrimmerException(
      code: 'unsupported_file_type',
      message: '.mp3 File type is not supported',
    );
  }
  try {
    String outputPath = '${outputDirectory.path}/$fileName.${fileType.name}';

    switch (defaultTargetPlatform) {
      case TargetPlatform.android:
        return _trimAudioForAndroid(
          inputPath: inputFile.path,
          time: time,
          outputPath: outputPath,
        );
      //
      case TargetPlatform.iOS:
        return _trimAudioForIos(
          inputPath: inputFile.path,
          time: time,
          outputPath: outputPath,
          fileType: fileType,
        );
      default:
        throw AudioTrimmerException(
          code: 'not_supported',
          message: '${defaultTargetPlatform.name} is not supported',
        );
    }
  } on PlatformException catch (e) {
    throw AudioTrimmerException(
      code: e.code,
      message: e.message ?? '',
      details: e.details,
    );
  } catch (e) {
    throw AudioTrimmerException(code: 'unknown_error', message: e.toString());
  }
}