chaunkinfo.dart_
981 Bytes
import 'package:flutter/foundation.dart';
import 'dart:io';
// 分片信息类
class ChunkInfo {
final int index;
final int start;
final int end;
final int totalChunks;
ChunkInfo(this.index, this.start, this.end, this.totalChunks);
}
// 在后台线程计算文件分片信息
List<ChunkInfo> calculateChunks(String filePath, int chunkSize) {
final file = File(filePath);
final fileSize = file.lengthSync();
final totalChunks = (fileSize / chunkSize).ceil();
final chunks = <ChunkInfo>[];
for (int i = 0; i < totalChunks; i++) {
final start = i * chunkSize;
final end = (i + 1) * chunkSize > fileSize ? fileSize : (i + 1) * chunkSize;
chunks.add(ChunkInfo(i, start, end, totalChunks));
}
return chunks;
}
class FileUploader {
static Future<List<ChunkInfo>> prepareChunks(File file, int chunkSize) async {
// 在后台线程计算分片信息,避免阻塞UI
return await compute(calculateChunks, file.path, chunkSize);
}
}