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