| Index: pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
|
| index 0e92c36c30f961861a8980265ccefed327bd7225..f372ae22ac115e1ad6b5037e09c0f20e2ee36c6d 100644
|
| --- a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
|
| +++ b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
|
| @@ -6,12 +6,16 @@ library services.completion.contributor.dart.arglist;
|
|
|
| import 'dart:async';
|
|
|
| +import 'package:analysis_server/src/ide_options.dart';
|
| import 'package:analysis_server/src/protocol_server.dart'
|
| hide Element, ElementKind;
|
| import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
| +import 'package:analysis_server/src/services/completion/dart/utilities.dart';
|
| +import 'package:analysis_server/src/services/correction/flutter_util.dart';
|
| import 'package:analysis_server/src/utilities/documentation.dart';
|
| import 'package:analyzer/dart/ast/ast.dart';
|
| import 'package:analyzer/dart/element/element.dart';
|
| +import 'package:analyzer/dart/element/type.dart';
|
| import 'package:analyzer/src/generated/utilities_dart.dart';
|
|
|
| /**
|
| @@ -265,10 +269,51 @@ class ArgListContributor extends DartCompletionContributor {
|
| _setDocumentation(suggestion, parameter.field?.documentationComment);
|
| suggestion.element = convertElement(parameter);
|
| }
|
| +
|
| + String defaultValue = _getDefaultValue(parameter, request.ideOptions);
|
| + if (defaultValue != null) {
|
| + //TODO(pq): unify with `utilities.dart`
|
| + StringBuffer sb = new StringBuffer();
|
| + sb.write('${parameter.name}: ');
|
| + int offset = sb.length;
|
| + sb.write(defaultValue);
|
| + suggestion.defaultArgumentListString = defaultValue;
|
| + suggestion.defaultArgumentListTextRanges = [
|
| + offset,
|
| + defaultValue.length
|
| + ];
|
| + }
|
| +
|
| suggestions.add(suggestion);
|
| }
|
| }
|
|
|
| + //TODO(pq): move and unify w/ `utilities.dart`
|
| + String _getDefaultValue(ParameterElement param, IdeOptions options) {
|
| + if (options?.generateFlutterWidgetChildrenBoilerPlate == true) {
|
| + Element element = param.enclosingElement;
|
| + if (element is ConstructorElement) {
|
| + ConstructorElement constructorElement = element;
|
| + ClassElement classElement = constructorElement.enclosingElement;
|
| + if (isFlutterWidget(classElement)) {
|
| + for (ParameterElement param in constructorElement.parameters) {
|
| + if (param.name == 'children') {
|
| + DartType type = param.type;
|
| + if (type is InterfaceType && isDartList(type)) {
|
| + InterfaceType interfaceType = type;
|
| + List<DartType> typeArguments = interfaceType.typeArguments;
|
| + if (typeArguments.length == 1) {
|
| + return '<${typeArguments.first.name}>[]';
|
| + }
|
| + }
|
| + }
|
| + }
|
| + }
|
| + }
|
| + }
|
| + return null;
|
| + }
|
| +
|
| void _addSuggestions(Iterable<ParameterElement> parameters) {
|
| if (parameters == null || parameters.length == 0) {
|
| return;
|
|
|