You can make the listen callback an async function, and then await the call to myFuture. Here's an updated version of your example code:
Future<int> myFuture(int n) async {
  await Future.delayed(Duration(seconds: 2));  // Mock future
  print("Future finished for: $n");
  return n;
}
Stream<int> countStream(int to) async* {
  for (int i = 1; i <= to; i++) {
    yield i;
  }
}
void main() async {
  var stream = countStream(10);
  stream.listen((n) async {
    await myFuture(n);
  });
}
Alternatively, you could use the asyncMap method on the Stream object to apply the asynchronous operation to each element of the stream:
void main() async {
  var stream = countStream(10);
  await for (var result in stream.asyncMap((n) => myFuture(n))) {
    // do something with the result
  }
}
In this example, asyncMap applies the myFuture function to each element of the stream, and returns a new stream containing the results. The await for loop then iterates over the results of the new stream.
To know more, join our Flutter Training today.