zoukankan      html  css  js  c++  java
  • [Dart] Capture and Handle Data Sequences with Streams in Dart

    Streams represent a sequence of asynchronous events. Each event is either a data event, also called an element of the stream, or an error event, which is a notification that something has failed. When a stream has emitted all its events, a single "done" event will notify the listener that the end has been reached. In this lesson, we will learn how we can capture and handle streaming data, working with various Stream classes.

      // Single Stream
      StreamController<String> controller = StreamController<String>();
      // Setup listener
      controller.stream.listen(
        (data) => print('Received data: ${data.toUpperCase()}'),
        onDone: () => print('done'),
        onError: (e) => print('error $e')
      );
      // Emit event
      controller.add('Hello');  
      controller.add('World');
      // trigger error
      controller.addError('Throwing this error');
      // trigger done
      await controller.close();
      print('after done, return future, clean up');
    // Broadcast Stream
      StreamController<String> controller2 = StreamController<String>();
      Stream<String> boradcast = controller2.stream.asBroadcastStream();
      
      boradcast.listen((data) => print('Received data: $data'));              
      boradcast.listen((data) => print('Received data again: $data'));
      
      controller2.add('Hello1');  
      controller2.add('World2');
     // Future-based streams
      Future<String> result = HttpRequest.getString('https://swapi.co/api/people/1');
      Stream<String> resultStream = Stream.fromFuture(result);
      resultStream.listen(
        (data) => print('Got data: $data'),
        onError: (e) => print(e.type),
        onDone: () => print('No more data on stream.')
      );
      
      // Future-based multi streams
      Future<String> result2 = HttpRequest.getString('https://swapi.co/api/people/2');
      Stream<String> peopleStream = Stream.fromFutures([result, result2]);
      peopleStream.listen(
        (person) => print('=> Got person: $person'),
            onDone: () => print('No more people on stream.')
      );
      // Typeahead
      List<String> chars = 'Dart is awesome'.split('');
      Stream<String> charStream = Stream.fromIterable(chars);
      var idx = 0;
      charStream.listen((char) {
        Timer(Duration(milliseconds: idx * 200), () => print(char));
        idx++;
      });
  • 相关阅读:
    Python基础:28正则表达式
    Remove Duplicates from Sorted Array
    Reverse Nodes in k-Group
    Merge k Sorted Lists
    Generate Parentheses
    Container With Most Water
    Regular Expression Matching
    Median of Two Sorted Arrays
    sql 子查询
    linux安装服务器
  • 原文地址:https://www.cnblogs.com/Answer1215/p/11454287.html
Copyright © 2011-2022 走看看