bloc.dart 1.36 KB
import 'package:bloc/bloc.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<HomeEvent, HomeState> {
  HomeBloc() : super(HomeState().init()) {
    on<InitEvent>(_init);
    on<ExchangeSuccessEvent>(_exchangeSuccess);
  }

  bool exchangeResult = false;

  void _init(InitEvent event, Emitter<HomeState> emit) async {
    await _checkUpdate(emit);
  }

  void _exchangeSuccess(
      ExchangeSuccessEvent event, Emitter<HomeState> emit) async {
    if (exchangeResult) {
      emit(HomeState());
    }
  }

  Future<void> _checkUpdate(Emitter<HomeState> 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));
    }
  }
}