如何使用Dart的分析器API获取可选参数的默认值?

Set*_*add 5 dart dart-analyzer

我正在使用Dart分析器 API,它允许我内省Dart代码.

这是一些示例代码:

void soIntense(anything, {bool flag: true, int value}) {  }
Run Code Online (Sandbox Code Playgroud)

注意flag参数的默认值是多少true.

假设我有一个实例,我怎样才能得到默认值ParameterElement

Set*_*add 4

这是我发现的最好的方法。我希望有更好的方法。

首先,检查是否有默认值:

bool hasDefaultValue = _parameter.defaultValueRange != null &&
       _parameter.defaultValueRange != SourceRange.EMPTY;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 aParameterElementdefaultValueRange

SourceRange range = _parameter.defaultValueRange;
return _parameter.source.contents.data.substring(range.offset, range.end);
Run Code Online (Sandbox Code Playgroud)

用英语讲:

获取参数元素的Source内容的data的子字符串。