startApp method

void startApp()

Implementation

void startApp() async {
  _timeRecord = DateTime.now().millisecondsSinceEpoch;
  _emit(const AppStarting());
  S data;
  try {
    data = await repository.initApp();
  } catch (e, s) {
    _emit(AppStartFailed(e, s));
    return;
  }

  int cost = DateTime.now().millisecondsSinceEpoch - _timeRecord;
  int waitTime = minStartDurationMs - cost;
  if (waitTime > 0) {
    _emit(AppLoadDone(cost, data));
    await Future<void>.delayed(Duration(milliseconds: waitTime));
  } else {
    _emit(AppLoadDone(cost, data));
    await Future<void>.delayed(const Duration(milliseconds: 50));
  }
  _emit(AppStartSuccess(data));
}