是否可以将带参数的函数传递给 VoidCallback?
例如这样的:
class MyClass {
void doSomething(int i){
}
MyOtherClass myOtherClass = new MyOtherClass(doSomething);
}
class MyOtherClass {
final VoidCallback callback(int);
MyOtherClass(this.callback);
callback(5);
}
最佳答案
VoidCallback
的声明是
typedef void VoidCallback();
这是可以用零参数调用并且不返回有用值的函数类型。这似乎不是你想要的。 由于该程序在语法上无效,因此尚不完全清楚您想要什么,但这对您有用吗:
class MyClass {
static doSomething(int i) { /* ... */ }
MyOtherClass myOtherClass = new MyOtherClass(doSomething);
}
class MyOtherClass {
final void Function(int) callback;
MyOtherClass(this.callback);
void callCallaback() { callback(5); }
}
这里我们将 callback
字段的类型定义为可以使用一个整数参数调用并且不返回有用值的函数类型。 doSomething
方法具有该类型,因此可以将其分配给 callback
。
你也可以使用 typedef 来命名函数:
typedef Int2VoidFunc = void Function(int);
// or: typedef void Int2VoidFunc(int arg);
class MyOtherClass {
final Int2VoidFunc callback;
MyOtherClass(this.callback);
void callCallaback() { callback(5); }
}
效果一模一样,只是允许你为函数类型使用更短的名称,但只有在你经常使用它的情况下才真正有意义。
关于dart - 将带参数的函数传递给 VoidCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50085748/