title: Flutter & Firebase: Compression before upload image
body: <p>I want to send photo selected by user in my app to Firebase Storage. I have a simple class with property <code>_imageFile</code> which is set like this:</p>
  
  <pre><code>File _imageFile;
  
  _getImage() async {
      var fileName = await ImagePicker.pickImage();
      setState(() {
          _imageFile = fileName;
      });
  }
  </code></pre>
  
  <p>after that I send photo like with this code:</p>
  
  <pre><code>final String rand1 = "${new Random().nextInt(10000)}";
  final String rand2 = "${new Random().nextInt(10000)}";
  final String rand3 = "${new Random().nextInt(10000)}";
  final StorageReference ref = FirebaseStorage.instance.ref().child('${rand1}_${rand2}_${rand3}.jpg');
  final StorageUploadTask uploadTask = ref.put(_imageFile);
  final Uri downloadUrl = (await uploadTask.future).downloadUrl;
  print(downloadUrl);
  </code></pre>
  
  <p>The problem is that the photos are often very large. Is there any method in Flutter/Dart to compress and resize photo before upload? I am ok with loss of quality.</p>