Files
Lukas Klingsbo dbda37b81a refactor: Add new lint rules (#2477)
This PR adds the following lint rules to our list:

```
always_put_required_named_parameters_first
avoid_multiple_declarations_per_line
avoid_positional_boolean_parameters
avoid_returning_null_for_void
avoid_returning_this
avoid_unnecessary_containers
enable_null_safety
library_private_types_in_public_api
no_leading_underscores_for_library_prefixes
no_leading_underscores_for_local_identifiers
prefer_null_aware_method_calls
tighten_type_of_initializing_formals
unnecessary_late
use_setters_to_change_properties
```

And these rules were considered, and some changes were made according to
them as a clean-up, but in many places they didn't make sense
(`prefer_asserts_with_message` I would have included, but there were too
many places that needed to be changes):

```
collection_methods_unrelated_type
prefer_asserts_with_message
avoid_renaming_method_parameters
```
2023-04-13 19:42:00 +00:00

85 lines
2.0 KiB
Dart

import 'package:flame/components.dart';
import 'package:flame/extensions.dart';
import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flame/palette.dart';
import 'package:flame_audio/flame_audio.dart';
import 'package:flutter/widgets.dart' hide Animation;
void main() {
runApp(GameWidget(game: AudioGame()));
}
/// This example game showcases three possible use cases:
///
/// 1. Use the static FlameAudio class to easily fire a sfx using the default
/// configs for the button tap.
/// 2. Uses a custom AudioPool for extremely efficient audio loading and pooling
/// for tapping elsewhere.
/// 3. Uses the Bgm utility for background music.
class AudioGame extends FlameGame with TapDetector {
static Paint black = BasicPalette.black.paint();
static Paint gray = const PaletteEntry(Color(0xFFCCCCCC)).paint();
static TextPaint text = TextPaint(
style: TextStyle(color: BasicPalette.white.color),
);
late AudioPool pool;
@override
Future<void> onLoad() async {
pool = await FlameAudio.createPool(
'sfx/fire_2.mp3',
minPlayers: 3,
maxPlayers: 4,
);
startBgmMusic();
}
Rect get button => Rect.fromLTWH(20, size.y - 300, size.x - 40, 200);
void startBgmMusic() {
FlameAudio.bgm.initialize();
FlameAudio.bgm.play('music/bg_music.ogg');
}
void fireOne() {
FlameAudio.play('sfx/fire_1.mp3');
}
void fireTwo() {
pool.start();
}
@override
void render(Canvas canvas) {
super.render(canvas);
canvas.drawRect(size.toRect(), black);
text.render(
canvas,
'(click anywhere for 1)',
Vector2(size.x / 2, 200),
anchor: Anchor.topCenter,
);
canvas.drawRect(button, gray);
text.render(
canvas,
'click here for 2',
Vector2(size.x / 2, size.y - 200),
anchor: Anchor.bottomCenter,
);
}
@override
void onTapDown(TapDownInfo info) {
if (button.containsPoint(info.eventPosition.game)) {
fireTwo();
} else {
fireOne();
}
}
}