Flutter 是否可以传递带参数的函数,然后在Dart中调用它?
为了重用,我试图将返回类型为Flutter 是否可以传递带参数的函数,然后在Dart中调用它?,flutter,dart,Flutter,Dart,为了重用,我试图将返回类型为流的函数传递给使用者。我之所以要这样做,是因为我想关闭我处理完后传递给它的类上的流 如果我直接发送一个流,我不喜欢在“子”对象中关闭它,我可能会在创建它的类上调用close()后持有一个引用并使用它 // Declare some functions that return a Stream<Foo> Stream<Foo> stream1() => GenerateStream(); Stream<Foo> stream2(
流的函数传递给使用者。我之所以要这样做,是因为我想关闭我处理完后传递给它的类上的流
如果我直接发送一个流
,我不喜欢在“子”对象中关闭它,我可能会在创建它的类上调用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));
//声明一些返回流的函数
stream1()=>GenerateStream();
stream2(字符串a)=>GenerateStreamWith1参数(a);
stream3(字符串a,int b)=>GenerateStreamWith2参数(a,b);
//建造师
MyStreamConsumer(流函数(…)f){//类似于Dart中的…运算符?
Stream Stream=f.call();//现在我可以处理这个对象上的流,因为它是在这里创建的。
}
//实例化
MyStreamConsumer(stream1());
MyStreamConsumer(stream2('SomeString'));
MyStreamConsumer(stream3('SomeString',1));
这有可能实现吗?还是有其他办法来解决这个问题
编辑(为什么我不想直接传递流):
Stream=stream1();
MyStreamConsumer(流);//我可能已经使用并处理了流,这会造成某种未定义的行为。
stream.listen()//这里我可能在听一个封闭的流。
您是要传递一个可以传递参数的函数,还是要传递一个传递了特定参数的函数?@Abion47如果示例有错误(因为stream1()返回一个流,但我不知道正确的表示法,或者如果可能的话)。我的想法是传递一个函数,稍后可以使用我在Instance注释中指定的参数调用该函数。如果使用特定参数调用函数,假设它是纯函数,则始终会返回相同的对象。那么,为什么要传递函数而不仅仅是传递流本身呢?@Abion47我做了一次编辑,试图解释为什么。然后你需要的是一个工厂对象。使用要传递的参数初始化工厂,然后可以随时使用这些参数重新创建流。
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.