import 'package:audioplayers/audioplayers.dart'; import 'package:bloc/bloc.dart'; import 'package:wow_english/common/extension/string_extension.dart'; import '../../common/core/app_config_helper.dart'; import '../../common/request/dao/system_dao.dart'; import '../../models/app_version_entity.dart'; import '../../utils/log_util.dart'; import 'event.dart'; import 'state.dart'; class HomeBloc extends Bloc { HomeBloc() : super(HomeState().init()) { on(_init); on(_exchangeSuccess); } bool exchangeResult = false; late AudioPlayer audioPlayer; late AudioPlayer studyPlayer; late AudioPlayer gamePlayer; @override Future close() { audioPlayer.release(); audioPlayer.dispose(); studyPlayer.release(); studyPlayer.dispose(); gamePlayer.release(); gamePlayer.dispose(); return super.close(); } void _init(InitEvent event, Emitter emit) async { audioPlayer = AudioPlayer(playerId: 'audio'); gamePlayer = AudioPlayer(playerId: 'game'); studyPlayer = AudioPlayer(playerId: 'study'); audioPlayer.play(AssetSource('welcome_to_wow'.assetMp3)); await _checkUpdate(emit); } void _exchangeSuccess( ExchangeSuccessEvent event, Emitter emit) async { if (exchangeResult) { emit(HomeState()); } } Future _checkUpdate(Emitter emit) async { if (AppConfigHelper.checkedUpdate) { return; } int localVersion = int.parse(await AppConfigHelper.getAppVersion()); AppVersionEntity? appVersionEntity = await SystemDao.getVersionInfo(); AppConfigHelper.checkedUpdate = true; if (appVersionEntity == null) { return; } Log.d( "WQF _checkUpdate appVersionEntity: $appVersionEntity localVersion=$localVersion"); if (localVersion < int.parse(appVersionEntity.version ?? '0')) { emit(UpdateDialogState( appVersionEntity.volType == UpdateStrategy.FORCE.name, appVersionEntity)); } } }