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, FixType.none));
return;
}
/// 计算初始化的耗时时长
int cost = DateTime.now().millisecondsSinceEpoch - _timeRecord;
int waitTime = minStartDurationMs - cost;
if (waitTime > 0) {
/// 说明启动时间小于 [minStartDurationMs], 等待时间差
emit(AppLoadDone(cost, data));
await Future.delayed(Duration(milliseconds: waitTime));
} else {
/// 说明启动时间超过 [minStartDurationMs],给一点预加载的时间
emit(AppLoadDone(cost, data));
await Future.delayed(const Duration(milliseconds: 50));
}
emit(const AppStartSuccess());
}