[英]Flutter, Dart. Create anonymous class
也许这真的是个愚蠢的问题。 但我无法相信在描述的地方没有资源。 即使来自官方文档。 我正在尝试做的是为下一个 function 创建匿名 class。
如何使用自定义 function 在 Dart 中创建匿名 class,例如 Kotlin 中的下一个?
Handler(Looper.getMainLooper()).post(Runnable() {
@override
open fun run() {
//...
}
private fun local() {
//....
}
})
Dart 不支持创建匿名 class。
你试图做的事情是不可能的。
另一方面,您可以创建匿名函数。 所以你可以用它来模仿一个匿名的 class。
想法是添加抽象 class 的构造函数,将其实现推迟到回调。
abstract class Event {
void run();
}
class _AnonymousEvent implements Event {
_AnonymousEvent({void run()}): _run = run;
final void Function() _run;
@override
void run() => _run();
}
Event createAnonymousEvent() {
return _AnonymousEvent(
run: () => print('run'),
);
}
它与匿名的 class 并不完全相同,并且更接近于装饰器模式。 但它应该涵盖大多数用例。
这是另一种方法,但不完全等效:
问题,例如:我想在没有 class 的代码中内联实现 OnChildClickListener。对于此方法:
void setOnChildClickListener(OnChildClickListener listener) {
...
}
而不是这个:
abstract class OnChildClickListener {
bool onChildClick(int groupPosition, int childPosition);
}
用这个:
typedef OnChildClickListener = Function(int groupPosition, int childPosition);
在代码中你可以这样实现它:
listView.setOnChildClickListener((int groupPosition, int childPosition) {
// your code here
});
也就是说不要使用abstract class,而是使用typedef。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.