[英]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.