dart - 将带参数的函数传递给 VoidCallback

标签 dart flutter

是否可以将带参数的函数传递给 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/

相关文章:

flutter - 如何将我的 QR 生成图像保存到图库中?使用 flutter

flutter - 可以在main.dart Flutter中调用提供程序功能吗

dart - 单击 Iconbutton 后如何将其更改为不同的 Iconbutton

testing - 在 Flutter 的 pumpAndSettle() 中,如何在不传入 EnginePhase 的情况下指定超时?

flutter - 排除某些文件/库以在Flutter Web中构建

dart - 属性的允许值

flutter - 如何在flutter(dart)中创建函数列表/调用函数的列表

flutter - flutter ,显示问题实例

Dart/flutter : Error "Stream has already been listened to." && "await for" inside fa "for loop" fails

flutter 圆角底部导航栏