skip to Main Content

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

Answers


  1. Chosen as 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();
    

  2. Use await keyword.

    await stream.listen(
        (data) {
          print(data.length);
        },
      );
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search