在我的 Flutter 應用程式中,我想構建這個函式:
bool isValidType(element, Type cls) {
return element is cls;
}
這個問題是:The name 'cls' isn't a type and can't be used in an 'is' expression. Try correcting the name to match an existing type. dart(type_test_with_non_type)
element是動態的,但我希望它是擴展類的類的物件Element(如class Node extends Element)。我希望能夠使用此功能的方式是:
isValidType(node, Node) -> true
isValidType(node, Element) -> true
我首先認為我可以這樣做:
bool isValidType(element, Type cls) {
return element.runtimeType == cls;
}
但問題在于,對于上面提供的示例,它回傳以下內容:
isValidType(node, Node) -> true
isValidType(node, Element) -> false
原因當然是runtimeTypeof nodeisNode和 not Element。
為了滿足我的要求,我必須對首先提供的功能進行哪些更改?
uj5u.com熱心網友回復:
目前,您對物件無能為力Type。一般建議是避免使用它們。
在您的情況下,如果您想檢查編譯時已知的型別,您可以創建isValidType一個通用函式:
bool isValidType<T>(dynamic element) => element is T;
然后使用isValidType<Node>(node)or isValidType<Element>(node)。但是,我認為這樣的功能不會增加任何東西,因此您不妨在呼叫點替換isValidType<Node>(Node)為node is Node。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/533173.html
標籤:扑镖
