gpt4 book ai didi

dictionary - 在流中使用 map 时出现Dart问题

转载 作者:行者123 更新时间:2023-12-03 04:42:59 24 4
gpt4 key购买 nike

我创建一个简单的流,添加一些元素并收听该流。但是在流上使用 map 时出现问题。为了简单起见,我只是将值映射到相同的值(我猜是吗?)。
当我尝试运行该程序时,出现 map 错误:

Uncaught Error: TypeError: Instance of '_MapStream<String, dynamic>': type '_MapStream<String, dynamic>' is not a subtype of type 'Stream<String>'
import 'dart:async';

void main() async {

StreamController controller = StreamController<String>.broadcast();

final StreamTransformer transformer = StreamTransformer<String, String>.fromHandlers(
handleData: (data, EventSink sink) {
sink.add(data);
}
);

Stream stream = controller.stream;

stream
.map((value) => value) // <-- Problem in this line
.transform(transformer)
.listen(
(data) {
print('listen: $data');
},
onError: (err) => print(err));

controller.add('foo');
controller.add('baa');

controller.close();
}

最佳答案

您的问题是您要强制泛型类型中的非泛型类型。如果在不使用显式键入的地方编写这样的代码:

import 'dart:async';

void main() async {
final controller = StreamController<String>.broadcast(); // <-- fixed here

final StreamTransformer transformer =
StreamTransformer<String, String>.fromHandlers(
handleData: (data, EventSink sink) {
sink.add(data);
});

final stream = controller.stream; // <-- fixed here

stream
.map((value) => value) // <-- Problem in this line
.transform(transformer)
.listen((data) {
print('listen: $data');
}, onError: (err) => print(err));

controller.add('foo');
controller.add('baa');

controller.close();
}
然后,Dart会自动确定您要执行的类型是 StreamController<String>Stream<String>,而不是 StreamControllerStream
当删除类型的通用部分时,您还将删除Dart猜测所调用的所有方法的类型的能力。
如果使用显式键入,则应输入:
import 'dart:async';

void main() async {
StreamController<String> controller = StreamController<String>.broadcast();

final StreamTransformer transformer =
StreamTransformer<String, String>.fromHandlers(
handleData: (data, EventSink sink) {
sink.add(data);
});

Stream<String> stream = controller.stream;

stream
.map((value) => value) // <-- Problem in this line
.transform(transformer)
.listen((data) {
print('listen: $data');
}, onError: (err) => print(err));

controller.add('foo');
controller.add('baa');

controller.close();
}

关于dictionary - 在流中使用 map 时出现Dart问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62834837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com