Skip to content

Commit 90ce990

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Simplify Flutter support to a single instance.
Change-Id: I90813c4e01694510971c4ce9cf96a4a3380a2923 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153952 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent ca7dd96 commit 90ce990

File tree

14 files changed

+139
-218
lines changed

14 files changed

+139
-218
lines changed

pkg/analysis_server/lib/src/computer/computer_outline.dart

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@ import 'package:analyzer_plugin/protocol/protocol_common.dart';
1616
class DartUnitOutlineComputer {
1717
final ResolvedUnitResult resolvedUnit;
1818
final bool withBasicFlutter;
19-
final Flutter flutter;
2019

21-
DartUnitOutlineComputer(this.resolvedUnit, {this.withBasicFlutter = false})
22-
: flutter = Flutter.of(resolvedUnit);
20+
DartUnitOutlineComputer(this.resolvedUnit, {this.withBasicFlutter = false});
2321

2422
/// Returns the computed outline, not `null`.
2523
Outline compute() {
@@ -409,6 +407,8 @@ class _FunctionBodyOutlinesVisitor extends RecursiveAstVisitor<void> {
409407

410408
_FunctionBodyOutlinesVisitor(this.outlineComputer, this.contents);
411409

410+
Flutter get _flutter => Flutter.instance;
411+
412412
/// Return `true` if the given [element] is the method 'group' defined in the
413413
/// test package.
414414
bool isGroup(engine.ExecutableElement element) {
@@ -438,13 +438,12 @@ class _FunctionBodyOutlinesVisitor extends RecursiveAstVisitor<void> {
438438

439439
@override
440440
void visitInstanceCreationExpression(InstanceCreationExpression node) {
441-
if (outlineComputer.withBasicFlutter &&
442-
outlineComputer.flutter.isWidgetCreation(node)) {
441+
if (outlineComputer.withBasicFlutter && _flutter.isWidgetCreation(node)) {
443442
var children = <Outline>[];
444443
node.argumentList
445444
.accept(_FunctionBodyOutlinesVisitor(outlineComputer, children));
446445

447-
var text = outlineComputer.flutter.getWidgetPresentationText(node);
446+
var text = _flutter.getWidgetPresentationText(node);
448447
var element = Element(ElementKind.CONSTRUCTOR_INVOCATION, text, 0,
449448
location: outlineComputer._getLocationOffsetLength(node.offset, 0));
450449

pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,19 @@ import 'package:analyzer/dart/element/element.dart';
1313
/// Computer for Flutter specific outlines.
1414
class FlutterOutlineComputer {
1515
final ResolvedUnitResult resolvedUnit;
16-
Flutter flutter;
1716

1817
final List<protocol.FlutterOutline> _depthFirstOrder = [];
1918

2019
FlutterOutlineComputer(this.resolvedUnit);
2120

21+
Flutter get _flutter => Flutter.instance;
22+
2223
protocol.FlutterOutline compute() {
2324
var dartOutline = DartUnitOutlineComputer(
2425
resolvedUnit,
2526
withBasicFlutter: false,
2627
).compute();
2728

28-
flutter = Flutter.of(resolvedUnit);
29-
3029
// Convert Dart outlines into Flutter outlines.
3130
var flutterDartOutline = _convert(dartOutline);
3231

@@ -131,7 +130,7 @@ class FlutterOutlineComputer {
131130
/// a widget reference outline item.
132131
protocol.FlutterOutline _createOutline(Expression node, bool withGeneric) {
133132
var type = node.staticType;
134-
if (!flutter.isWidgetType(type)) {
133+
if (!_flutter.isWidgetType(type)) {
135134
return null;
136135
}
137136
var className = type.element.displayName;
@@ -140,9 +139,9 @@ class FlutterOutlineComputer {
140139
var attributes = <protocol.FlutterOutlineAttribute>[];
141140
var children = <protocol.FlutterOutline>[];
142141
for (var argument in node.argumentList.arguments) {
143-
var isWidgetArgument = flutter.isWidgetType(argument.staticType);
142+
var isWidgetArgument = _flutter.isWidgetType(argument.staticType);
144143
var isWidgetListArgument =
145-
flutter.isListOfWidgetsType(argument.staticType);
144+
_flutter.isListOfWidgetsType(argument.staticType);
146145

147146
String parentAssociationLabel;
148147
Expression childrenExpression;

pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ class ArgListContributor extends DartCompletionContributor {
163163
}
164164

165165
bool _isInFlutterCreation() {
166-
var flutter = Flutter.of(request.result);
166+
var flutter = Flutter.instance;
167167
var containingNode = request.target?.containingNode;
168168
var newExpr = containingNode != null
169169
? flutter.identifyNewExpression(containingNode.parent)

pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,17 +164,12 @@ class SuggestionBuilder {
164164
/// computed. In the latter case, [_hasContainingMemberName] will be `false`.
165165
String _cachedContainingMemberName;
166166

167-
/// The cached instance of the flutter utilities, or `null` if it hasn't been
168-
/// created yet.
169-
Flutter _flutter;
170-
171167
/// Initialize a newly created suggestion builder to build suggestions for the
172168
/// given [request].
173169
SuggestionBuilder(this.request, {this.listener});
174170

175-
/// Return an object that can answer questions about Flutter code based on the
176-
/// flavor of Flutter being used.
177-
Flutter get flutter => _flutter ??= Flutter.of(request.result);
171+
/// Return an object that can answer questions about Flutter code.
172+
Flutter get flutter => Flutter.instance;
178173

179174
/// Return an iterable that can be used to access the completion suggestions
180175
/// that have been built.
@@ -803,8 +798,7 @@ class SuggestionBuilder {
803798
// todo (pq): revisit this special casing; likely it can be generalized away
804799
var element = parameter.enclosingElement;
805800
if (element is ConstructorElement) {
806-
var flutter = Flutter.of(request.result);
807-
if (flutter.isWidget(element.enclosingElement)) {
801+
if (Flutter.instance.isWidget(element.enclosingElement)) {
808802
var defaultValue = getDefaultStringParameterValue(parameter);
809803
// TODO(devoncarew): Should we remove the check here? We would then
810804
// suggest values for param types like closures.

pkg/analysis_server/lib/src/services/correction/base_processor.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ abstract class BaseProcessor {
2323
final String file;
2424

2525
final TypeProvider typeProvider;
26-
final Flutter flutter;
2726

2827
final AnalysisSession session;
2928
final AnalysisSessionHelper sessionHelper;
@@ -38,13 +37,14 @@ abstract class BaseProcessor {
3837
@required this.resolvedResult,
3938
@required this.workspace,
4039
}) : file = resolvedResult.path,
41-
flutter = Flutter.of(resolvedResult),
4240
session = resolvedResult.session,
4341
sessionHelper = AnalysisSessionHelper(resolvedResult.session),
4442
typeProvider = resolvedResult.typeProvider,
4543
selectionEnd = (selectionOffset ?? 0) + (selectionLength ?? 0),
4644
utils = CorrectionUtils(resolvedResult);
4745

46+
Flutter get flutter => Flutter.instance;
47+
4848
@protected
4949
bool setupCompute() {
5050
final locator = NodeLocator(selectionOffset, selectionEnd);

pkg/analysis_server/lib/src/services/correction/dart/abstract_producer.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,6 @@ class CorrectionProducerContext {
252252
final String file;
253253

254254
final TypeProvider typeProvider;
255-
final Flutter flutter;
256255

257256
final AnalysisSession session;
258257
final AnalysisSessionHelper sessionHelper;
@@ -272,7 +271,6 @@ class CorrectionProducerContext {
272271
this.selectionOffset = -1,
273272
this.selectionLength = 0,
274273
}) : file = resolvedResult.path,
275-
flutter = Flutter.of(resolvedResult),
276274
session = resolvedResult.session,
277275
sessionHelper = AnalysisSessionHelper(resolvedResult.session),
278276
typeProvider = resolvedResult.typeProvider,
@@ -344,7 +342,7 @@ abstract class _AbstractCorrectionProducer {
344342

345343
String get file => _context.file;
346344

347-
Flutter get flutter => _context.flutter;
345+
Flutter get flutter => Flutter.instance;
348346

349347
/// Return the library element for the library in which a correction is being
350348
/// produced.

pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,6 @@ class _WidgetDescriptionComputer {
131131
/// The offset of the widget expression.
132132
final int widgetOffset;
133133

134-
/// The instance of [Flutter] support.
135-
final Flutter flutter;
136-
137134
ClassElement _classAlignment;
138135
ClassElement _classAlignmentDirectional;
139136
ClassElement _classContainer;
@@ -143,11 +140,13 @@ class _WidgetDescriptionComputer {
143140
this.classRegistry,
144141
this.resolvedUnit,
145142
this.widgetOffset,
146-
) : flutter = Flutter.of(resolvedUnit);
143+
);
144+
145+
Flutter get _flutter => Flutter.instance;
147146

148147
Future<_WidgetDescription> compute() async {
149148
var node = NodeLocator2(widgetOffset).searchWithin(resolvedUnit.unit);
150-
var instanceCreation = flutter.identifyNewExpression(node);
149+
var instanceCreation = _flutter.identifyNewExpression(node);
151150
if (instanceCreation == null) {
152151
return null;
153152
}
@@ -173,7 +172,7 @@ class _WidgetDescriptionComputer {
173172
List<PropertyDescription> properties,
174173
InstanceCreationExpression widgetCreation,
175174
) {
176-
if (!flutter.isWidgetCreation(widgetCreation)) {
175+
if (!_flutter.isWidgetCreation(widgetCreation)) {
177176
return;
178177
}
179178

@@ -190,7 +189,7 @@ class _WidgetDescriptionComputer {
190189
}
191190

192191
PropertyDescription containerProperty;
193-
if (flutter.isExactlyContainerCreation(parentCreation)) {
192+
if (_flutter.isExactlyContainerCreation(parentCreation)) {
194193
containerProperty = PropertyDescription(
195194
resolvedUnit: resolvedUnit,
196195
instanceCreation: parentCreation,
@@ -236,17 +235,17 @@ class _WidgetDescriptionComputer {
236235
classDescription: containerDescription,
237236
);
238237

239-
if (flutter.isExactlyAlignCreation(parentCreation) &&
240-
flutter.findNamedArgument(parentCreation, 'widthFactor') == null &&
241-
flutter.findNamedArgument(parentCreation, 'heightFactor') == null) {
238+
if (_flutter.isExactlyAlignCreation(parentCreation) &&
239+
_flutter.findNamedArgument(parentCreation, 'widthFactor') == null &&
240+
_flutter.findNamedArgument(parentCreation, 'heightFactor') == null) {
242241
_replaceNestedContainerProperty(
243242
containerProperty,
244243
parentCreation,
245244
'alignment',
246245
);
247246
}
248247

249-
if (flutter.isExactlyPaddingCreation(parentCreation)) {
248+
if (_flutter.isExactlyPaddingCreation(parentCreation)) {
250249
_replaceNestedContainerProperty(
251250
containerProperty,
252251
parentCreation,
@@ -347,7 +346,7 @@ class _WidgetDescriptionComputer {
347346
var propertyDescription = PropertyDescription(
348347
parent: parent,
349348
resolvedUnit: resolvedUnit,
350-
flutter: flutter,
349+
flutter: _flutter,
351350
classDescription: classDescription,
352351
instanceCreation: instanceCreation,
353352
argumentExpression: argumentExpression,
@@ -366,7 +365,7 @@ class _WidgetDescriptionComputer {
366365
);
367366
properties.add(propertyDescription);
368367

369-
if (flutter.isExactEdgeInsetsGeometryType(parameter.type)) {
368+
if (_flutter.isExactEdgeInsetsGeometryType(parameter.type)) {
370369
propertyDescription.addEdgeInsetsNestedProperties(_classEdgeInsets);
371370
} else if (valueExpression is InstanceCreationExpression) {
372371
var type = valueExpression.staticType;
@@ -414,19 +413,19 @@ class _WidgetDescriptionComputer {
414413
Future<void> _fetchClassElements() async {
415414
var sessionHelper = AnalysisSessionHelper(resolvedUnit.session);
416415
_classAlignment = await sessionHelper.getClass(
417-
flutter.widgetsUri,
416+
_flutter.widgetsUri,
418417
'Alignment',
419418
);
420419
_classAlignmentDirectional = await sessionHelper.getClass(
421-
flutter.widgetsUri,
420+
_flutter.widgetsUri,
422421
'AlignmentDirectional',
423422
);
424423
_classContainer = await sessionHelper.getClass(
425-
flutter.widgetsUri,
424+
_flutter.widgetsUri,
426425
'Container',
427426
);
428427
_classEdgeInsets = await sessionHelper.getClass(
429-
flutter.widgetsUri,
428+
_flutter.widgetsUri,
430429
'EdgeInsets',
431430
);
432431
}
@@ -460,7 +459,7 @@ class _WidgetDescriptionComputer {
460459
enumItems: _enumItemsForEnum(classElement),
461460
);
462461
}
463-
if (flutter.isExactAlignmentGeometry(classElement)) {
462+
if (_flutter.isExactAlignmentGeometry(classElement)) {
464463
var items = <protocol.FlutterWidgetPropertyValueEnumItem>[];
465464
items.addAll(
466465
_enumItemsForStaticFields(_classAlignment),
@@ -484,7 +483,7 @@ class _WidgetDescriptionComputer {
484483
InstanceCreationExpression parentCreation,
485484
String name,
486485
) {
487-
var argument = flutter.findNamedArgument(parentCreation, name);
486+
var argument = _flutter.findNamedArgument(parentCreation, name);
488487
if (argument != null) {
489488
var replacements = <PropertyDescription>[];
490489
_addProperty(
@@ -536,8 +535,8 @@ class _WidgetDescriptionComputer {
536535
if (field is FieldElement && field.isStatic) {
537536
var enclosingClass = field.enclosingElement as ClassElement;
538537
if (field.isEnumConstant ||
539-
flutter.isExactAlignment(enclosingClass) ||
540-
flutter.isExactAlignmentDirectional(enclosingClass)) {
538+
_flutter.isExactAlignment(enclosingClass) ||
539+
_flutter.isExactAlignmentDirectional(enclosingClass)) {
541540
return protocol.FlutterWidgetPropertyValue(
542541
enumValue: _toEnumItem(field),
543542
);

pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
3737
final int length;
3838

3939
CorrectionUtils utils;
40-
Flutter flutter;
4140

4241
ClassElement classBuildContext;
4342
ClassElement classKey;
@@ -78,7 +77,6 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
7877
this.searchEngine, this.resolveResult, this.offset, this.length)
7978
: sessionHelper = AnalysisSessionHelper(resolveResult.session) {
8079
utils = CorrectionUtils(resolveResult);
81-
flutter = Flutter.of(resolveResult);
8280
}
8381

8482
@override
@@ -90,6 +88,8 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
9088
return resolveResult.unit.featureSet;
9189
}
9290

91+
Flutter get _flutter => Flutter.instance;
92+
9393
bool get _isNonNullable => _featureSet.isEnabled(Feature.non_nullable);
9494

9595
@override
@@ -184,8 +184,8 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
184184
_enclosingClassElement = _enclosingClassNode?.declaredElement;
185185

186186
// new MyWidget(...)
187-
var newExpression = flutter.identifyNewExpression(node);
188-
if (flutter.isWidgetCreation(newExpression)) {
187+
var newExpression = _flutter.identifyNewExpression(node);
188+
if (_flutter.isWidgetCreation(newExpression)) {
189189
_expression = newExpression;
190190
return RefactoringStatus();
191191
}
@@ -203,7 +203,7 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
203203
if (statements.isNotEmpty) {
204204
var lastStatement = statements.last;
205205
if (lastStatement is ReturnStatement &&
206-
flutter.isWidgetExpression(lastStatement.expression)) {
206+
_flutter.isWidgetExpression(lastStatement.expression)) {
207207
_statements = statements;
208208
_statementsRange = range.startEnd(statements.first, statements.last);
209209
return RefactoringStatus();
@@ -221,7 +221,7 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
221221
}
222222
if (node is MethodDeclaration) {
223223
var returnType = node.returnType?.type;
224-
if (flutter.isWidgetType(returnType) && node.body != null) {
224+
if (_flutter.isWidgetType(returnType) && node.body != null) {
225225
_method = node;
226226
return RefactoringStatus();
227227
}
@@ -238,10 +238,10 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
238238
var result = RefactoringStatus();
239239

240240
Future<ClassElement> getClass(String name) async {
241-
var element = await sessionHelper.getClass(flutter.widgetsUri, name);
241+
var element = await sessionHelper.getClass(_flutter.widgetsUri, name);
242242
if (element == null) {
243243
result.addFatalError(
244-
"Unable to find '$name' in ${flutter.widgetsUri}",
244+
"Unable to find '$name' in ${_flutter.widgetsUri}",
245245
);
246246
}
247247
return element;

pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,7 @@ class RenameUnitMemberRefactoringImpl extends RenameRefactoringImpl {
141141
}
142142

143143
void _findFlutterStateClass() {
144-
var flutter = Flutter.of(resolvedUnit);
145-
if (flutter.isStatefulWidgetDeclaration(element)) {
144+
if (Flutter.instance.isStatefulWidgetDeclaration(element)) {
146145
var oldStateName = oldName + 'State';
147146
_flutterWidgetState = element.library.getType(oldStateName) ??
148147
element.library.getType('_' + oldStateName);

0 commit comments

Comments
 (0)