splitFileIntoChunks function

Future<SplitFileChunksResult> splitFileIntoChunks(
  1. PlatformFile file,
  2. int partSize
)

Implementation

Future<SplitFileChunksResult> splitFileIntoChunks(
    PlatformFile file, int partSize) async {
  final filesize = file.size;
  final divider = DividePartResult.parse(filesize, partSize);
  final List<Chunk> chunks = [];
  for (var i = 0; i < divider.partNumber; i++) {
    final number = i + 1;
    final offset = i * divider.partSize;
    final size = divider.partSize;
    final chunk = Chunk(number, offset, size, false);
    chunks.add(chunk);
  }
  if (filesize % divider.partSize > 0) {
    final number = chunks.length + 1;
    final offset = chunks.length * divider.partSize;
    final size = filesize % divider.partSize;
    final chunk = Chunk(number, offset, size, false);
    chunks.add(chunk);

    return SplitFileChunksResult(
        DividePartResult(divider.partSize, divider.partNumber + 1), chunks);
  }
  return SplitFileChunksResult(divider, chunks);
}