Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart Streams StreamTransformer int上的错误不是EventSink的子类型<;动态>;_Dart - Fatal编程技术网

Dart Streams StreamTransformer int上的错误不是EventSink的子类型<;动态>;

Dart Streams StreamTransformer int上的错误不是EventSink的子类型<;动态>;,dart,Dart,尝试学习Dart和泛型现在我有了这个代码尝试学习关于流的知识,但我似乎明白我的代码有什么问题 import 'dart:async'; void main() { StreamController<int> controller = new StreamController<int>(); num i = 0; Future.doWhile(() { controller.add(i++); if (i == 100) {

尝试学习Dart和泛型现在我有了这个代码尝试学习关于流的知识,但我似乎明白我的代码有什么问题

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));
}
导入'dart:async';
void main(){
StreamController=新的StreamController();
numi=0;
Future.doWhile(){
controller.add(i++);
如果(i==100){
返回false;
}
返回true;
});
var结果=controller.stream.transform(
StreamTransformer.fromHandlers(
handleData:(整数,事件接收器){
如果(数字=70){
下沉。加法器(“命中70”);
}否则{
增加(数字);
}
}));
结果.监听((数据)=>打印(数据));
}
上面的代码给我带来了以下错误

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) 
类型“int”不是“data”的“EventSink”类型的子类型
EventSinkWrapper.add(dart:async/stream\u transformers.dart)
梅因。(file:///var/www/html/learning/dart/rr.dart:23:12)
HandlerEventSink.add(dart:async/stream\u transformers.dart:228:7)
SinkTransformersStreamSubscription.\u handleData(dart:async/stream\u transformers.dart:120:24)

A
StreamTransformer
的通用类型是数据输入类型和数据输出类型。您的转换器将
int
映射到
dynamic
(不过,正如当前编写的,它实际上只发出
int

您在
StringTransformer
构造函数上的类型不正确。(此外,无需重复
handleData
lambda定义中的类型,因为它们可以从变压器的类型推断出来。)

尝试:

void main(){
StreamController=新的StreamController();
numi=0;
Future.doWhile(){
controller.add(i++);
返回i<100;
});
var结果=controller.stream.transform(
StreamTransformer.fromHandlers(
handleData:(数字,水槽){
如果(数字=70){
下沉。加法器(“命中70”);
}否则{
增加(数字);
}
},
),
);
结果.监听((数据)=>打印(数据));
}
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));
}