refactor: Modernize switch; use switch-expressions and no break; (#3133)

Replaces the switch cases that can be replaces with switch expressions
and removes `break;` where it isn't needed.

https://dart.dev/language/branches#switch-statements
This commit is contained in:
Lukas Klingsbo
2024-04-18 23:41:08 +02:00
committed by GitHub
parent 69f5c388ce
commit b283b82f6c
29 changed files with 183 additions and 425 deletions

View File

@ -10,29 +10,16 @@ void main() {
if (page.startsWith('?')) {
page = page.substring(1);
}
switch (page) {
case 'step2':
step2.main();
break;
case 'step3':
step3.main();
break;
case 'step4':
step4.main();
break;
case 'step5':
step5.main();
break;
default:
runApp(
return switch (page) {
'step2' => step2.main(),
'step3' => step3.main(),
'step4' => step4.main(),
'step5' => step5.main(),
_ => runApp(
Directionality(
textDirection: TextDirection.ltr,
child: Text('Error: unknown page name "$page"'),
child: Text('Error=> unknown page name "$page"'),
),
);
}
),
};
}

View File

@ -97,29 +97,24 @@ class Card extends PositionComponent {
switch (rank.value) {
case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -127,7 +122,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -136,7 +130,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -146,7 +139,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -157,7 +149,6 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -169,16 +160,12 @@ class Card extends PositionComponent {
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11:
_drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5);
break;
case 12:
_drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5);
break;
case 13:
_drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5);
break;
}
}

View File

@ -105,29 +105,24 @@ class Card extends PositionComponent with DragCallbacks {
switch (rank.value) {
case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -135,7 +130,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -144,7 +138,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -154,7 +147,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -165,7 +157,6 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -177,16 +168,12 @@ class Card extends PositionComponent with DragCallbacks {
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11:
_drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5);
break;
case 12:
_drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5);
break;
case 13:
_drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5);
break;
}
}

View File

@ -143,29 +143,24 @@ class Card extends PositionComponent
switch (rank.value) {
case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -173,7 +168,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -182,7 +176,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -192,7 +185,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -203,7 +195,6 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -215,16 +206,12 @@ class Card extends PositionComponent
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11:
_drawSprite(canvas, suit.isRed ? redJack : blackJack, 0.5, 0.5);
break;
case 12:
_drawSprite(canvas, suit.isRed ? redQueen : blackQueen, 0.5, 0.5);
break;
case 13:
_drawSprite(canvas, suit.isRed ? redKing : blackKing, 0.5, 0.5);
break;
}
}

View File

@ -401,29 +401,24 @@ of drawing various sprites in different places on the card's face:
switch (rank.value) {
case 1:
_drawSprite(canvas, suitSprite, 0.5, 0.5, scale: 2.5);
break;
case 2:
_drawSprite(canvas, suitSprite, 0.5, 0.25);
_drawSprite(canvas, suitSprite, 0.5, 0.25, rotate: true);
break;
case 3:
_drawSprite(canvas, suitSprite, 0.5, 0.2);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
_drawSprite(canvas, suitSprite, 0.5, 0.2, rotate: true);
break;
case 4:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 5:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.5);
break;
case 6:
_drawSprite(canvas, suitSprite, 0.3, 0.25);
_drawSprite(canvas, suitSprite, 0.7, 0.25);
@ -431,7 +426,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.25, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.25, rotate: true);
break;
case 7:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -440,7 +434,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.7, 0.5);
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
break;
case 8:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -450,7 +443,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.3, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.5, 0.35, rotate: true);
break;
case 9:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -461,7 +453,6 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.7, 0.2, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 10:
_drawSprite(canvas, suitSprite, 0.3, 0.2);
_drawSprite(canvas, suitSprite, 0.7, 0.2);
@ -473,16 +464,12 @@ of drawing various sprites in different places on the card's face:
_drawSprite(canvas, suitSprite, 0.5, 0.3, rotate: true);
_drawSprite(canvas, suitSprite, 0.3, 0.4, rotate: true);
_drawSprite(canvas, suitSprite, 0.7, 0.4, rotate: true);
break;
case 11:
_drawSprite(canvas, suit.isRed? redJack : blackJack, 0.5, 0.5);
break;
case 12:
_drawSprite(canvas, suit.isRed? redQueen : blackQueen, 0.5, 0.5);
break;
case 13:
_drawSprite(canvas, suit.isRed? redKing : blackKing, 0.5, 0.5);
break;
}
```

View File

@ -56,40 +56,26 @@ class EmberQuestGame extends FlameGame
void loadGameSegments(int segmentIndex, double xPositionOffset) {
for (final block in segments[segmentIndex]) {
switch (block.blockType) {
case GroundBlock:
world.add(
GroundBlock(
final component = switch (block.blockType) {
GroundBlock => GroundBlock(
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
),
);
break;
case PlatformBlock:
world.add(
PlatformBlock(
PlatformBlock => PlatformBlock(
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
),
);
break;
case Star:
world.add(
Star(
Star => Star(
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
),
);
break;
case WaterEnemy:
world.add(
WaterEnemy(
WaterEnemy => WaterEnemy(
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
),
);
break;
}
_ => throw UnimplementedError(),
};
world.add(component);
}
}

View File

@ -235,13 +235,9 @@ void loadGameSegments(int segmentIndex, double xPositionOffset) {
for (final block in segments[segmentIndex]) {
switch (block.blockType) {
case GroundBlock:
break;
case PlatformBlock:
break;
case Star:
break;
case WaterEnemy:
break;
}
}
}
@ -434,7 +430,6 @@ case PlatformBlock:
gridPosition: block.gridPosition,
xOffset: xPositionOffset,
));
break;
```
If you run your code, you should now see:

View File

@ -90,7 +90,6 @@ case Star:
xOffset: xPositionOffset,
),
);
break;
```
If you run your game, you should now see pulsating stars!
@ -177,7 +176,6 @@ case WaterEnemy:
xOffset: xPositionOffset,
),
);
break;
```
If you run the game now, the Water Enemy should be displayed and moving!
@ -397,7 +395,6 @@ case GroundBlock:
xOffset: xPositionOffset,
),
);
break;
```
If you run your code, your game should now look like this:

View File

@ -14,32 +14,18 @@ void main() {
page = page.substring(1);
}
switch (page) {
case 'step1':
step1.main();
break;
case 'step2':
step2.main();
break;
case 'step3':
step3.main();
break;
case 'step4':
step4.main();
break;
case 'step5':
step5.main();
break;
case 'step6':
step6.main();
break;
default:
runApp(
return switch (page) {
'step1' => step1.main(),
'step2' => step2.main(),
'step3' => step3.main(),
'step4' => step4.main(),
'step5' => step5.main(),
'step6' => step6.main(),
_ => runApp(
Directionality(
textDirection: TextDirection.ltr,
child: Text('Error: unknown page name "$page"'),
),
);
}
),
};
}

View File

@ -8,12 +8,10 @@ enum GameColors {
extension GameColorExtension on GameColors {
Color get color {
switch (this) {
case GameColors.green:
return ColorExtension.fromRGBHexString('#14F596');
case GameColors.blue:
return ColorExtension.fromRGBHexString('#81DDF9');
}
return switch (this) {
GameColors.green => ColorExtension.fromRGBHexString('#14F596'),
GameColors.blue => ColorExtension.fromRGBHexString('#81DDF9'),
};
}
Paint get paint => Paint()..color = color;

View File

@ -89,19 +89,17 @@ class ObstacleTypeSettings {
);
Sprite sprite(Image spriteImage) {
switch (type) {
case ObstacleType.cactusSmall:
return Sprite(
return switch (type) {
ObstacleType.cactusSmall => Sprite(
spriteImage,
srcPosition: Vector2(446.0, 2.0),
srcSize: size,
);
case ObstacleType.cactusLarge:
return Sprite(
),
ObstacleType.cactusLarge => Sprite(
spriteImage,
srcPosition: Vector2(652.0, 2.0),
srcSize: size,
);
}
),
};
}
}

View File

@ -115,16 +115,10 @@ class CalculatePrimeNumber extends PositionComponent
final nextInt = _primeData.key + 1;
try {
final bool isPrime;
switch (computeType) {
case ComputeType.isolate:
isPrime = await isolateCompute(_isPrime, nextInt);
break;
case ComputeType.synchronous:
isPrime = _isPrime(nextInt);
break;
}
final isPrime = switch (computeType) {
ComputeType.isolate => await isolateCompute(_isPrime, nextInt),
ComputeType.synchronous => _isPrime(nextInt),
};
_primeData = MapEntry(nextInt, isPrime);
} on BackpressureDropException catch (_) {

View File

@ -287,15 +287,13 @@ MyCollidable randomCollidable(
final rng = random ?? Random();
final rotationSpeed = 0.5 - rng.nextDouble();
final shapeType = Shapes.values[rng.nextInt(Shapes.values.length)];
switch (shapeType) {
case Shapes.circle:
return CollidableCircle(position, size, velocity, screenHitbox)
..rotationSpeed = rotationSpeed;
case Shapes.rectangle:
return CollidableRectangle(position, size, velocity, screenHitbox)
..rotationSpeed = rotationSpeed;
case Shapes.polygon:
return CollidablePolygon(position, size, velocity, screenHitbox)
..rotationSpeed = rotationSpeed;
}
return switch (shapeType) {
Shapes.circle => CollidableCircle(position, size, velocity, screenHitbox)
..rotationSpeed = rotationSpeed,
Shapes.rectangle =>
CollidableRectangle(position, size, velocity, screenHitbox)
..rotationSpeed = rotationSpeed,
Shapes.polygon => CollidablePolygon(position, size, velocity, screenHitbox)
..rotationSpeed = rotationSpeed,
};
}

View File

@ -18,18 +18,15 @@ class SpawnComponentWorld extends World with TapCallbacks {
@override
void onTapDown(TapDownEvent info) {
final shapeType = Shapes.values.random();
final Shape shape;
final position = info.localPosition;
switch (shapeType) {
case Shapes.rectangle:
shape = Rectangle.fromCenter(
final shape = switch (shapeType) {
Shapes.rectangle => Rectangle.fromCenter(
center: position,
size: Vector2.all(200),
);
case Shapes.circle:
shape = Circle(position, 150);
case Shapes.polygon:
shape = Polygon(
),
Shapes.circle => Circle(position, 150),
Shapes.polygon => Polygon(
[
Vector2(-1.0, 0.0),
Vector2(-0.8, 0.6),
@ -44,8 +41,8 @@ class SpawnComponentWorld extends World with TapCallbacks {
..scale(200)
..add(position);
}).toList(),
);
}
),
};
add(
SpawnComponent(

View File

@ -27,21 +27,19 @@ class _GestureHitboxesWorld extends World with TapCallbacks {
final shapeSize =
Vector2.all(100) + Vector2.all(50.0).scaled(_rng.nextDouble());
final shapeAngle = _rng.nextDouble() * 6;
ShapeHitbox hitbox;
switch (shapeType) {
case Shapes.circle:
hitbox = CircleHitbox();
case Shapes.rectangle:
hitbox = RectangleHitbox();
case Shapes.polygon:
final points = [
final hitbox = switch (shapeType) {
Shapes.circle => CircleHitbox(),
Shapes.rectangle => RectangleHitbox(),
Shapes.polygon => PolygonHitbox.relative(
[
-Vector2.random(_rng),
Vector2.random(_rng)..x *= -1,
Vector2.random(_rng),
Vector2.random(_rng)..y *= -1,
];
hitbox = PolygonHitbox.relative(points, parentSize: shapeSize);
}
],
parentSize: shapeSize,
),
};
return MyShapeComponent(
hitbox: hitbox,
position: position,

View File

@ -369,18 +369,13 @@ enum _QuadTreeZone {
const _QuadTreeZone(this.value);
factory _QuadTreeZone.fromIndex(int i) {
switch (i) {
case 0:
return _QuadTreeZone.topLeft;
case 1:
return _QuadTreeZone.topRight;
case 2:
return _QuadTreeZone.bottomLeft;
case 3:
return _QuadTreeZone.bottomRight;
default:
return _QuadTreeZone.root;
}
return switch (i) {
0 => _QuadTreeZone.topLeft,
1 => _QuadTreeZone.topRight,
2 => _QuadTreeZone.bottomLeft,
3 => _QuadTreeZone.bottomRight,
_ => _QuadTreeZone.root,
};
}
final int value;

View File

@ -86,31 +86,23 @@ class ComponentTreeRoot extends Component {
_blocked.contains(identityHashCode(parent))) {
continue;
}
var status = LifecycleEventStatus.done;
switch (event.kind) {
case _LifecycleEventKind.add:
status = child.handleLifecycleEventAdd(parent);
break;
case _LifecycleEventKind.remove:
status = child.handleLifecycleEventRemove(parent);
break;
case _LifecycleEventKind.move:
status = child.handleLifecycleEventMove(parent);
break;
case _LifecycleEventKind.unknown:
break;
}
final status = switch (event.kind) {
_LifecycleEventKind.add => child.handleLifecycleEventAdd(parent),
_LifecycleEventKind.remove =>
child.handleLifecycleEventRemove(parent),
_LifecycleEventKind.move => child.handleLifecycleEventMove(parent),
_LifecycleEventKind.unknown => LifecycleEventStatus.done,
};
switch (status) {
case LifecycleEventStatus.done:
_queue.removeCurrent();
repeatLoop = true;
break;
case LifecycleEventStatus.block:
_blocked.add(identityHashCode(child));
_blocked.add(identityHashCode(parent));
break;
default:
break;
}
}
_blocked.clear();

View File

@ -250,14 +250,11 @@ class ParallaxLayer {
void resize(Vector2 size) {
double scale(LayerFill fill) {
switch (fill) {
case LayerFill.height:
return parallaxRenderer.image.height / size.y;
case LayerFill.width:
return parallaxRenderer.image.width / size.x;
default:
return _scale;
}
return switch (fill) {
LayerFill.height => parallaxRenderer.image.height / size.y,
LayerFill.width => parallaxRenderer.image.width / size.x,
_ => _scale,
};
}
_scale = scale(parallaxRenderer.fill);
@ -299,15 +296,11 @@ class ParallaxLayer {
switch (parallaxRenderer.repeat) {
case ImageRepeat.repeat:
_scroll.setValues(_scroll.x % 1, _scroll.y % 1);
break;
case ImageRepeat.repeatX:
_scroll.setValues(_scroll.x % 1, _scroll.y);
break;
case ImageRepeat.repeatY:
_scroll.setValues(_scroll.x, _scroll.y % 1);
break;
case ImageRepeat.noRepeat:
break;
}
_paintArea = Rect.fromLTWH(

View File

@ -58,20 +58,7 @@ void main() {
final pixels = Uint8List.fromList(
List<int>.generate(
100 * 4,
(index) {
switch (index % 4) {
case 0:
return originalColor.red;
case 1:
return originalColor.green;
case 2:
return originalColor.blue;
case 3:
return originalColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
(index) => _colorBit(index, originalColor),
),
);
final image = await ImageExtension.fromPixels(pixels, 10, 10);
@ -85,20 +72,7 @@ void main() {
final expectedDarkenPixels = Uint8List.fromList(
List<int>.generate(
100 * 4,
(index) {
switch (index % 4) {
case 0:
return darkenColor.red;
case 1:
return darkenColor.green;
case 2:
return darkenColor.blue;
case 3:
return darkenColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
(index) => _colorBit(index, darkenColor),
),
);
expect(originalDarkenPixelsList, expectedDarkenPixels);
@ -109,20 +83,7 @@ void main() {
final pixels = Uint8List.fromList(
List<int>.generate(
100 * 4,
(index) {
switch (index % 4) {
case 0:
return originalColor.red;
case 1:
return originalColor.green;
case 2:
return originalColor.blue;
case 3:
return originalColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
(index) => _colorBit(index, originalColor),
),
);
final image = await ImageExtension.fromPixels(pixels, 10, 10);
@ -136,20 +97,7 @@ void main() {
final expectedBrightenPixels = Uint8List.fromList(
List<int>.generate(
100 * 4,
(index) {
switch (index % 4) {
case 0:
return brightenColor.red;
case 1:
return brightenColor.green;
case 2:
return brightenColor.blue;
case 3:
return brightenColor.alpha;
default:
throw 'No 4 in switch % 4';
}
},
(index) => _colorBit(index, brightenColor),
),
);
expect(originalBrightenPixelsList, expectedBrightenPixels);
@ -170,3 +118,13 @@ void main() {
});
});
}
int _colorBit(int index, Color color) {
return switch (index % 4) {
0 => color.red,
1 => color.green,
2 => color.blue,
3 => color.alpha,
_ => throw UnimplementedError(),
};
}

View File

@ -18,16 +18,12 @@ class Inverter extends BaseNode implements NodeInterface {
}
void _invertStatus() {
switch (child.status) {
case NodeStatus.notStarted:
status = NodeStatus.notStarted;
case NodeStatus.running:
status = NodeStatus.running;
case NodeStatus.success:
status = NodeStatus.failure;
case NodeStatus.failure:
status = NodeStatus.success;
}
status = switch (child.status) {
NodeStatus.notStarted => NodeStatus.notStarted,
NodeStatus.running => NodeStatus.running,
NodeStatus.success => NodeStatus.failure,
NodeStatus.failure => NodeStatus.success,
};
}
@override

View File

@ -26,34 +26,25 @@ class BulletComponent extends SpriteAnimationComponent
}
double _mapWidth() {
switch (weapon) {
case Weapon.bullet:
return 10;
case Weapon.laser:
case Weapon.plasma:
return 5;
}
return switch (weapon) {
Weapon.bullet => 10,
Weapon.laser || Weapon.plasma => 5,
};
}
String _mapSpritePath() {
switch (weapon) {
case Weapon.bullet:
return 'bullet.png';
case Weapon.laser:
return 'laser.png';
case Weapon.plasma:
return 'plasma.png';
}
return switch (weapon) {
Weapon.bullet => 'bullet.png',
Weapon.laser => 'laser.png',
Weapon.plasma => 'plasma.png',
};
}
double _mapSpriteWidth() {
switch (weapon) {
case Weapon.bullet:
return 8;
case Weapon.laser:
case Weapon.plasma:
return 4;
}
return switch (weapon) {
Weapon.bullet => 8,
Weapon.laser || Weapon.plasma => 4,
};
}
@override

View File

@ -6,25 +6,19 @@ class Inventory extends StatelessWidget {
const Inventory({super.key});
Color _mapWeaponColor(Weapon weapon) {
switch (weapon) {
case Weapon.bullet:
return Colors.orange;
case Weapon.laser:
return Colors.red;
case Weapon.plasma:
return Colors.blue;
}
return switch (weapon) {
Weapon.bullet => Colors.orange,
Weapon.laser => Colors.red,
Weapon.plasma => Colors.blue,
};
}
String _mapWeaponName(Weapon weapon) {
switch (weapon) {
case Weapon.bullet:
return 'Kinetic';
case Weapon.laser:
return 'Laser';
case Weapon.plasma:
return 'Plasma';
}
return switch (weapon) {
Weapon.bullet => 'Kinetic',
Weapon.laser => 'Laser',
Weapon.plasma => 'Plasma',
};
}
@override

View File

@ -135,16 +135,12 @@ class BodyComponent<T extends Forge2DGame> extends Component
switch (fixture.type) {
case ShapeType.chain:
_renderChain(canvas, fixture);
break;
case ShapeType.circle:
_renderCircle(canvas, fixture);
break;
case ShapeType.edge:
_renderEdge(canvas, fixture);
break;
case ShapeType.polygon:
_renderPolygon(canvas, fixture);
break;
}
canvas.restore();
}

View File

@ -95,26 +95,19 @@ class WorkerOvermind extends Component
pathFinderData: game.pathFinderData,
);
final List<List<IntVector2>> paths;
switch (isolateHud.computeType) {
case ComputeType.isolate:
paths = await isolateCompute(
final paths = switch (isolateHud.computeType) {
ComputeType.isolate => await isolateCompute(
_calculateWork,
calculateWorkData,
);
break;
case ComputeType.synchronous:
paths = _calculateWork(
),
ComputeType.synchronous => _calculateWork(
calculateWorkData,
);
break;
case ComputeType.compute:
paths = await compute(
),
ComputeType.compute => await compute(
_calculateWork,
calculateWorkData,
);
break;
}
),
};
for (var i = 0; i < paths.length; i++) {
idleWorkers[i].issueWork(

View File

@ -205,7 +205,6 @@ class _Cmd {
'which is not a boolean',
);
}
break;
case _Type.integer:
final value = int.tryParse(strValue);
if (value == null) {
@ -215,7 +214,6 @@ class _Cmd {
);
}
_arguments[i] = value;
break;
case _Type.double:
final value = double.tryParse(strValue);
if (value == null) {
@ -225,7 +223,6 @@ class _Cmd {
);
}
_arguments[i] = value;
break;
case _Type.numeric:
final value = num.tryParse(strValue);
if (value == null) {
@ -235,10 +232,8 @@ class _Cmd {
);
}
_arguments[i] = value;
break;
case _Type.string:
_arguments[i] = strValue;
break;
}
}
return _arguments;

View File

@ -99,16 +99,12 @@ class FunctionStorage {
return (List<FunctionArgument> args, YarnProject yarn, ErrorFn errorFn) {
final arguments = function.checkAndUnpackArguments(args, errorFn);
function.useYarnProject(yarn);
switch (function.returnType) {
case ExpressionType.boolean:
return BooleanUserDefinedFn(function, arguments);
case ExpressionType.numeric:
return NumericUserDefinedFn(function, arguments);
case ExpressionType.string:
return StringUserDefinedFn(function, arguments);
default:
throw AssertionError('Bad return type'); // coverage:ignore-line
}
return switch (function.returnType) {
ExpressionType.boolean => BooleanUserDefinedFn(function, arguments),
ExpressionType.numeric => NumericUserDefinedFn(function, arguments),
ExpressionType.string => StringUserDefinedFn(function, arguments),
_ => throw AssertionError('Bad return type'), // coverage:ignore-line
};
};
}

View File

@ -45,30 +45,18 @@ class FlameMarkdown {
.map(_castCheck<InlineTextNode>)
.toList();
final child = _groupInlineChildren(children);
switch (element.tag) {
case 'h1':
return HeaderNode(child, level: 1);
case 'h2':
return HeaderNode(child, level: 2);
case 'h3':
return HeaderNode(child, level: 3);
case 'h4':
return HeaderNode(child, level: 4);
case 'h5':
return HeaderNode(child, level: 5);
case 'h6':
return HeaderNode(child, level: 6);
case 'p':
return ParagraphNode(child);
case 'em':
case 'i':
return ItalicTextNode(child);
case 'strong':
case 'b':
return BoldTextNode(child);
default:
throw Exception('Unknown element tag: ${element.tag}');
}
return switch (element.tag) {
'h1' => HeaderNode(child, level: 1),
'h2' => HeaderNode(child, level: 2),
'h3' => HeaderNode(child, level: 3),
'h4' => HeaderNode(child, level: 4),
'h5' => HeaderNode(child, level: 5),
'h6' => HeaderNode(child, level: 6),
'p' => ParagraphNode(child),
'em' || 'i' => ItalicTextNode(child),
'strong' || 'b' => BoldTextNode(child),
_ => throw Exception('Unknown element tag: ${element.tag}'),
} as TextNode;
}
static PlainTextNode _convertText(Text text) {

View File

@ -112,33 +112,26 @@ class RiveArtboardRenderer {
case BoxFit.fill:
scaleX = size.width / contentWidth;
scaleY = size.height / contentHeight;
break;
case BoxFit.contain:
final minScale =
min(size.width / contentWidth, size.height / contentHeight);
scaleX = scaleY = minScale;
break;
case BoxFit.cover:
final maxScale =
max(size.width / contentWidth, size.height / contentHeight);
scaleX = scaleY = maxScale;
break;
case BoxFit.fitHeight:
final minScale = size.height / contentHeight;
scaleX = scaleY = minScale;
break;
case BoxFit.fitWidth:
final minScale = size.width / contentWidth;
scaleX = scaleY = minScale;
break;
case BoxFit.none:
scaleX = scaleY = 1.0;
break;
case BoxFit.scaleDown:
final minScale =
min(size.width / contentWidth, size.height / contentHeight);
scaleX = scaleY = minScale < 1.0 ? minScale : 1.0;
break;
}
Mat2D.setIdentity(_transform);

View File

@ -71,9 +71,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
throw StateError('Map orientation should be present');
}
switch (mapOrientation) {
case MapOrientation.isometric:
return IsometricTileLayer(
return switch (mapOrientation) {
MapOrientation.isometric => IsometricTileLayer(
layer: layer,
parent: parent,
map: map,
@ -83,9 +82,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip,
filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory,
);
case MapOrientation.staggered:
return StaggeredTileLayer(
),
MapOrientation.staggered => StaggeredTileLayer(
layer: layer,
parent: parent,
map: map,
@ -95,9 +93,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip,
filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory,
);
case MapOrientation.hexagonal:
return HexagonalTileLayer(
),
MapOrientation.hexagonal => HexagonalTileLayer(
layer: layer,
parent: parent,
map: map,
@ -107,9 +104,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip,
filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory,
);
case MapOrientation.orthogonal:
return OrthogonalTileLayer(
),
MapOrientation.orthogonal => OrthogonalTileLayer(
layer: layer,
parent: parent,
map: map,
@ -119,8 +115,8 @@ abstract class FlameTileLayer extends RenderableLayer<TileLayer> {
ignoreFlip: ignoreFlip,
filterQuality: filterQuality,
layerPaintFactory: layerPaintFactory,
);
}
),
};
}
@override