Flutter: Cómo obtener el progreso de carga / descarga para solicitudes http

Estoy escribiendo una aplicación que carga una imagen en un servidor, y en lugar de mostrar solo una flecha giratoria, me encantaría poder avanzar en el estado de esa carga.

Adicionalmente, quiero hacer esto sin usar datos de formulario Multipart. Este es el código que estoy usando actualmente, pero parece estar bloqueándose con una tubería rota, y no tengo comentarios sobre si los datos se envían al servidor:

Future<String> _uploadFile(File assetFile) async {
  final url = <removed>;

  final stream = await assetFile.openRead();
  int length = assetFile.lengthSync();

  final client = new HttpClient();

  final request = await client.postUrl(Uri.parse(url));
request.headers.add(HttpHeaders.CONTENT_TYPE,  "application/octet-stream");
  request.contentLength = length;

  await request.addStream(stream);
  final response = await request.close();
  // response prociessing.
}

Es posible enviar datos grandes como una secuencia sin leerlos en la memoria, y puedo avanzar en esa carga con las API de dardo / aleteo actuales?

Respuestas a la pregunta(1)

Su respuesta a la pregunta