uploadFile static method

Future<String> uploadFile(
  1. File file,
  2. String path, {
  3. dynamic onProgress(
    1. String
    )?,
  4. Map<String, String> customMetadata = const {},
})

Implementation

static Future<String> uploadFile(
  File file,
  String path, {
  Function(String)? onProgress,
  Map<String, String> customMetadata = const {},
}) async {
  appLogsNS("uploadTask start");
  var stopwatch = Stopwatch()..start();
  Reference storageReference = FirebaseStorage.instance.ref().child(path);
  final UploadTask uploadTask = storageReference.putFile(
    file,
    SettableMetadata(
      contentLanguage: 'en',
      customMetadata: customMetadata,
    ),
  );
  uploadTask.snapshotEvents.listen((event) {
    final double progress = (event.bytesTransferred / event.totalBytes) * 100;
    if (onProgress != null) {
      onProgress(progress.toStringAsFixed(2));
    }
  });
  TaskSnapshot snapshot = await uploadTask.whenComplete(() {
    appLogsNS("uploadTask whenComplete");
  });
  appLogsNS("uploadTask whenComplete[${snapshot.state.index}]");
  String fileURL = await storageReference.getDownloadURL();
  appLogsNS("uploadFile fileURL: $fileURL");
  stopwatch.stop();
  appLogsNS(
      "uploadTask time[${stopwatch.elapsedMilliseconds}] in Milliseconds");
  return fileURL;
}