Files
GameTime/lib/presentation/exercise_step_audio.dart
Blomios e60c8bbdb8 feat(online): session compte, stockage sécurisé et adapter API (ticket #64)
Ajoute l'adapter API distant (infrastructure/remote/auth_api.dart,
http_api_client.dart) et le stockage sécurisé du token d'auth
(infrastructure/security/secure_storage_auth_token_store.dart), câblés
dans app_bootstrap.dart. Étend le modèle Drift (migration
schemaVersion 9→10) et la couche application (ports, use cases,
entités) pour la session de compte. flutter pub get OK (ajout http,
flutter_secure_storage), build_runner OK, dart format appliqué,
analyze propre (mêmes infos préexistantes), 109/109 tests verts,
build APK debug validé. Premier ticket du chantier "Ajouter les
features serveur au client" (#63).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 21:25:49 +02:00

51 lines
1.1 KiB
Dart

import 'package:audioplayers/audioplayers.dart';
abstract interface class ExerciseStepAudioCuePlayer {
Future<void> playShortCountdownBeep();
Future<void> playLongCompletionBeep();
Future<void> dispose();
}
final class AudioplayersExerciseStepAudioCuePlayer
implements ExerciseStepAudioCuePlayer {
AudioplayersExerciseStepAudioCuePlayer();
final AudioPlayer _player = AudioPlayer();
@override
Future<void> playShortCountdownBeep() {
return _play('audio/step_countdown_short.wav');
}
@override
Future<void> playLongCompletionBeep() {
return _play('audio/step_completion_long.wav');
}
Future<void> _play(String assetPath) async {
await _player.stop();
await _player.play(AssetSource(assetPath));
}
@override
Future<void> dispose() {
return _player.dispose();
}
}
final class NoOpExerciseStepAudioCuePlayer
implements ExerciseStepAudioCuePlayer {
const NoOpExerciseStepAudioCuePlayer();
@override
Future<void> playShortCountdownBeep() async {}
@override
Future<void> playLongCompletionBeep() async {}
@override
Future<void> dispose() async {}
}