import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:wow_english/common/core/user_util.dart'; import 'package:wow_english/utils/audio_player_util.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; void _init(InitEvent event, Emitter emit) async { if (UserUtil.isLogined()) { /// 增加1s避免与开屏音乐撞车(覆盖) Timer(const Duration(seconds: 1), () { AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.touch); }); } 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( "HomeBloc _checkUpdate appVersionEntity: $appVersionEntity localVersion=$localVersion"); if (localVersion < int.parse(appVersionEntity.version ?? '0')) { emit(UpdateDialogState( appVersionEntity.volType == UpdateStrategy.FORCE.name, appVersionEntity)); } } }