diff --git a/lib/core/constants/my_constants.dart b/lib/core/constants/my_constants.dart index b7a2826..59c91ec 100644 --- a/lib/core/constants/my_constants.dart +++ b/lib/core/constants/my_constants.dart @@ -24,7 +24,9 @@ class MyConstants { static const String firstShowcase = 'FIRST_SHOWCASE'; /// Other - static const double mainAudioVolume = 0.3; + static const double questionAudioVolume = 1.0; + static const double musicAudioVolume = 0.3; + static const double effectAudioVolume = 0.2; static const String defaultLanguage = 'en'; static const List languages = [ LanguageEntity(title: 'English (English)', code: 'en', locale: Locale('en','US')), diff --git a/lib/core/services/audio_service.dart b/lib/core/services/audio_service.dart index 4fc6f9e..f8d6610 100644 --- a/lib/core/services/audio_service.dart +++ b/lib/core/services/audio_service.dart @@ -6,11 +6,8 @@ import 'package:just_audio/just_audio.dart'; class AudioService { final AudioPlayer _player = AudioPlayer(); final StreamController _streamController = StreamController.broadcast(); - final double? volume; - AudioService({this.volume}) { - _player.setVolume(volume ?? 1); - } + AudioService(); Future setAudio({String? filePath, String? assetPath}) async { try { @@ -72,10 +69,10 @@ class AudioService { } } - Future changeMute() async { + Future changeMute({required double volume}) async { try { if (_player.volume == 0) { - await _player.setVolume(volume ?? 1); + await _player.setVolume(volume); } else { await _player.setVolume(0); } diff --git a/lib/features/home/presentation/bloc/home_bloc.dart b/lib/features/home/presentation/bloc/home_bloc.dart index 706dfa9..98a52fc 100644 --- a/lib/features/home/presentation/bloc/home_bloc.dart +++ b/lib/features/home/presentation/bloc/home_bloc.dart @@ -59,15 +59,17 @@ class HomeBloc extends Bloc { Future changeMute() async { await Future.wait([ - _mainAudioService.changeMute(), - _effectAudioService.changeMute(), + _mainAudioService.changeMute(volume: MyConstants.musicAudioVolume), + _effectAudioService.changeMute(volume: MyConstants.effectAudioVolume), ]); } Future playMusic() async { await Future.wait([ _mainAudioService.setAudio(assetPath: MyAudios.home), + _mainAudioService.setVolume(volume: MyConstants.musicAudioVolume), _mainAudioService.setLoopMode(isLoop: true), + _effectAudioService.setVolume(volume: MyConstants.effectAudioVolume), ]); await _mainAudioService.play(); } diff --git a/lib/features/level/presentation/bloc/level_bloc.dart b/lib/features/level/presentation/bloc/level_bloc.dart index 981cc3e..272a65a 100644 --- a/lib/features/level/presentation/bloc/level_bloc.dart +++ b/lib/features/level/presentation/bloc/level_bloc.dart @@ -189,6 +189,7 @@ class LevelBloc extends Bloc { Future playMusic() async { await Future.wait([ _mainAudioService.setAudio(assetPath: MyAudios.question), + _mainAudioService.setVolume(volume: MyConstants.musicAudioVolume), _mainAudioService.setLoopMode(isLoop: true), ]); await _mainAudioService.play(); @@ -223,8 +224,8 @@ class LevelBloc extends Bloc { Future changeMute() async { await Future.wait([ - _mainAudioService.changeMute(), - _effectAudioService.changeMute(), + _mainAudioService.changeMute(volume: MyConstants.musicAudioVolume), + _effectAudioService.changeMute(volume: MyConstants.effectAudioVolume), ]); } diff --git a/lib/features/question/presentation/bloc/question_bloc.dart b/lib/features/question/presentation/bloc/question_bloc.dart index a832e3f..c52f32b 100644 --- a/lib/features/question/presentation/bloc/question_bloc.dart +++ b/lib/features/question/presentation/bloc/question_bloc.dart @@ -33,7 +33,7 @@ class QuestionBloc extends Bloc { ) : super(QuestionState()) { volumeStream = _mainAudioService.volumeStream(); playingStream = _mainAudioService.playingStream(); - stopMusic(); + initAudios(); registerShowCase(); on(_getLevelEvent); on(_chooseAnswerEvent); @@ -42,6 +42,8 @@ class QuestionBloc extends Bloc { @override Future close() { unRegisterShowCase(); + _mainAudioService.setVolume(volume: MyConstants.musicAudioVolume); + _backgroundAudioService.dispose(); animationController.dispose(); return super.close(); } @@ -69,6 +71,7 @@ class QuestionBloc extends Bloc { /// ------------Controllers------------ final AudioService _mainAudioService; + final AudioService _backgroundAudioService = AudioService(); final AudioService _effectAudioService; late final AnimationController animationController; @@ -124,11 +127,16 @@ class QuestionBloc extends Bloc { await _effectAudioService.play(); } - Future stopMusic() async { + Future initAudios() async { await Future.wait([ _mainAudioService.stop(), + _mainAudioService.setVolume(volume: MyConstants.questionAudioVolume), _mainAudioService.setLoopMode(isLoop: false), + _backgroundAudioService.setAudio(assetPath: MyAudios.question), + _backgroundAudioService.setVolume(volume: 0.1), + _backgroundAudioService.setLoopMode(isLoop: true), ]); + await _backgroundAudioService.play(); } Future playWrongAudio() async { @@ -148,8 +156,9 @@ class QuestionBloc extends Bloc { Future changeMute() async { await Future.wait([ - _mainAudioService.changeMute(), - _effectAudioService.changeMute(), + _mainAudioService.changeMute(volume: MyConstants.questionAudioVolume), + _backgroundAudioService.changeMute(volume: 0.1), + _effectAudioService.changeMute(volume: MyConstants.effectAudioVolume), ]); } diff --git a/lib/init_bindings.dart b/lib/init_bindings.dart index 2690c2f..4c09d5a 100644 --- a/lib/init_bindings.dart +++ b/lib/init_bindings.dart @@ -41,7 +41,7 @@ void initBindings() { /// Classes locator.registerSingleton(HttpRequestImpl()); locator.registerSingleton( - AudioService(volume: MyConstants.mainAudioVolume), + AudioService(), instanceName: MyConstants.mainAudioService, ); locator.registerSingleton(