首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart Streams错误StreamTransformer int不是EventSink<dynamic>的子类型

Dart Streams错误StreamTransformer int不是EventSink<dynamic>的子类型
EN

Stack Overflow用户
提问于 2019-05-19 14:12:40
回答 1查看 988关注 0票数 0

尝试学习Dart和泛型现在我有以下代码尝试了解流,但我似乎无法了解我的代码有什么问题

代码语言:javascript
复制
import 'dart:async';

void main() {
  StreamController<int> controller = new StreamController<int>();

  num i = 0;

  Future.doWhile(() {
    controller.add(i++);

    if (i == 100) {
      return false;
    }
    return true;
  });

  var result = controller.stream.transform(
      StreamTransformer<int, EventSink<dynamic>>.fromHandlers(
          handleData: (int number, EventSink<dynamic> sink) {
    if (number == 70) {
      sink.addError("Hit seventy");
    } else {
      sink.add(number);
    }
  }));

  result.listen((data) => print(data));
}

上面的代码给我带来了以下错误

代码语言:javascript
复制
type 'int' is not a subtype of type 'EventSink<dynamic>' of 'data'
EventSinkWrapper.add (dart:async/stream_transformers.dart)
main.<anonymous closure> (file:///var/www/html/learning/dart/rr.dart:23:12)
HandlerEventSink.add (dart:async/stream_transformers.dart:228:7)
SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:120:24) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-20 08:12:15

StreamTransformer的泛型类型是数据输入类型和数据输出类型,您的转换器将int映射到dynamic (尽管,目前编写的它实际上只发出int)。

您在StringTransformer构造函数上的类型不正确。(而且,没有必要重复handleData lambda定义中的类型,因为它们可以从转换器的类型中推导出来。)

尝试:

代码语言:javascript
复制
void main() {
  StreamController<int> controller = new StreamController<int>();

  num i = 0;

  Future.doWhile(() {
    controller.add(i++);
    return i < 100;
  });

  var result = controller.stream.transform(
    StreamTransformer<int, dynamic>.fromHandlers(
      handleData: (number, sink) {
        if (number == 70) {
          sink.addError("Hit seventy");
        } else {
          sink.add(number);
        }
      },
    ),
  );

  result.listen((data) => print(data));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56205236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档