@@ -408,6 +408,9 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
408
408
builder.addInsertion (_enclosingUnitMember! .end, (builder) {
409
409
builder.writeln ();
410
410
builder.writeln ();
411
+ var useSuperParameters = _featureSet.isEnabled (Feature .super_parameters);
412
+ var paramsToInitialize =
413
+ _parameters.where ((p) => p.constructorName != p.name).toList ();
411
414
builder.writeClassDeclaration (
412
415
name,
413
416
superclass: classStatelessWidget! .instantiate (
@@ -425,15 +428,19 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
425
428
426
429
// Add the required `key` parameter.
427
430
builder.write (' ' );
428
- builder.writeParameter (
429
- 'key' ,
430
- type: classKey! .instantiate (
431
- typeArguments: const [],
432
- nullabilitySuffix: _isNonNullable
433
- ? NullabilitySuffix .question
434
- : NullabilitySuffix .star,
435
- ),
436
- );
431
+ if (useSuperParameters) {
432
+ builder.write ('super.key' );
433
+ } else {
434
+ builder.writeParameter (
435
+ 'key' ,
436
+ type: classKey! .instantiate (
437
+ typeArguments: const [],
438
+ nullabilitySuffix: _isNonNullable
439
+ ? NullabilitySuffix .question
440
+ : NullabilitySuffix .star,
441
+ ),
442
+ );
443
+ }
437
444
builder.writeln (',' );
438
445
439
446
// Add parameters for fields, local, and method parameters.
@@ -459,17 +466,25 @@ class ExtractWidgetRefactoringImpl extends RefactoringImpl
459
466
460
467
builder.write (' }' );
461
468
},
462
- initializerWriter: () {
463
- for (var parameter in _parameters) {
464
- if (parameter.constructorName != parameter.name) {
465
- builder.write (parameter.name);
466
- builder.write (' = ' );
467
- builder.write (parameter.constructorName);
468
- builder.write (', ' );
469
- }
470
- }
471
- builder.write ('super(key: key)' );
472
- },
469
+ initializerWriter: useSuperParameters && paramsToInitialize.isEmpty
470
+ ? null
471
+ : () {
472
+ for (var i = 0 ; i < paramsToInitialize.length; ++ i) {
473
+ var parameter = paramsToInitialize[i];
474
+ if (i > 0 ) {
475
+ builder.write (', ' );
476
+ }
477
+ builder.write (parameter.name);
478
+ builder.write (' = ' );
479
+ builder.write (parameter.constructorName);
480
+ }
481
+ if (! useSuperParameters) {
482
+ if (paramsToInitialize.isNotEmpty) {
483
+ builder.write (', ' );
484
+ }
485
+ builder.write ('super(key: key)' );
486
+ }
487
+ },
473
488
);
474
489
builder.writeln ();
475
490
builder.writeln ();
0 commit comments