listen for stream and print value in dart main function

516 Views Asked by At

I want to print data.length after listening to this stream but the program executed synchronously. How can I listen to this data stream without using the await-for syntax

void main() async {
  final file = File('assets/text_long.txt');
  final stream = file.openRead();

  stream.listen(
    (data) {
      print(data.length);
    },
  );
}

Here is the output:

Exited (1)
2

There are 2 best solutions below

0
zex_rectooor On BEST ANSWER

Use asFuture method.

  final file = File('assets/text_long.txt');
  final stream = file.openRead();

  final streamSubscription = stream.listen(
    (data) {
      print(data.length);
    },
  );
  await streamSubscription.asFuture();
1
Hoa Le On

Use await keyword.

await stream.listen(
    (data) {
      print(data.length);
    },
  );