我有一种方法可以将其输出发射到给定的ImmutableList
中。
我想将其传送到Sink<Node>
的{{1}}中。
假设我有一个将stdout
转换为Sink<List<int>>
的函数convert
,我该如何将Node
转换成List<int>
,以便它可以打印我的树到控制台?
答案 0 :(得分:2)
我已经制作了这个示例,展示了如何使用StreamController做到这一点:
import 'dart:async';
import 'dart:convert';
import 'dart:io';
class Message {
String text;
Message(this.text);
}
void main() {
final controller = StreamController<Message>();
stdout.addStream(controller.stream
.map((var msg) => msg.text)
.transform(const Utf8Encoder()));
var messageSink = controller.sink;
messageSink.add(Message('Hello World'));
}
此示例中的StreamController接受Message
个对象,并将其转换为List<int>
,方法是先使用map
将Message
转换为String对象,然后使用转换器进行转换将字符串转换为UTF8字节列表。