是否可以传递带有参数的函数,然后在Dart中调用它?

时间:2020-09-24 18:57:40

标签: flutter dart

出于重用性目的,我试图将返回类型为Stream<Foo>的函数传递给使用者。之所以这样做,是因为我想在完成处理后关闭通过它的类上的流。

如果我直接发送Stream<Foo>,我不喜欢将其关闭在“子”对象中的想法,并且我可能会保留引用并在调用close()之后使用它创建它的类。

// Declare some functions that return a Stream<Foo>
Stream<Foo> stream1() => GenerateStream();
Stream<Foo> stream2(String a) => GenerateStreamWith1Argument(a);
Stream<Foo> stream3(String a, int b) => GenerateStreamWith2Argument(a, b);

// Constructor
MyStreamConsumer(Stream<Foo> Function(...) f){ // Something like ... operator in Dart?
    Stream<Foo> stream = f.call(); // Now I can dispose Stream on this object since was created here.
}

// Instantiation
MyStreamConsumer(stream1());
MyStreamConsumer(stream2('SomeString'));
MyStreamConsumer(stream3('SomeString', 1));

这有可能实现吗?还是有解决此问题的替代方法?

编辑(为什么我不想直接传递流):

Stream<Foo> stream = stream1();
MyStreamConsumer(stream); // I might have used and disposed the stream which makes kinda undefined behavior.
stream.listen() // Here I am probably listening a closed stream.

0 个答案:

没有答案
相关问题