2017-01-20 6 views

답변

2

DartType 클래스는 analyzer 패키지, 다트의 정적 툴링 패키지에 의해 생성되는 정적 가 해결 유형입니다. 작성자는 다른 유형을 얻을 수있는 방법을 묻습니다. DartType - 당신이 상속하거나 구현하는 유형 인 수퍼 유형을 의미한다고 생각합니다.

우리는 그것을 경우 다음 DartType가에서 발원 Element의 보류를 얻을 수 있습니다 (당신이 단순히 DartType뭔가의 하위 유형 있는지 확인하고 싶었다면, 당신은 isSubtypeOf가 사용할 수 있습니다) ClassElement은 단순히 그렇지 않으면 아마도 빈 목록에 기본적으로, 슈퍼 유형을 모두 반환됩니다 :

import 'package:analyzer/dart/element/element.dart'; 
import 'package:analyzer/dart/element/type.dart'; 

/// Returns all sub-types of [type]. 
Iterable<DartType> getSubTypes(DartType type) { 
    final element = type.element; 
    if (element is ClassElement) { 
    return element.allSupertypes; 
    } 
    return const []; 
} 

을이 analyzer 버전 0.29.3입니다.

+0

죄송합니다. 제네릭 유형의 하위 유형을 원합니다. 예 :'List ''String'을 원합니다. –

+0

질문을 변경해야합니까? –

+1

다른 사람에게 물어 보거나 다른 사람에게 물어보십시오. 누군가에게 유용 할 것이라고 상상해 봅니다 :) – matanlurey