setBusy method
void
setBusy(})
Sets the busy state of the application.
Implementation
void setBusy(
bool isBusy, {
Duration minBusyDuration = kValuesMinBusyDuration,
String? busyMessage,
String? busyTitle,
BusyType? busyType,
Duration? timeoutDuration,
VoidCallback? onTimeout,
dynamic payload,
}) {
if (_allowUpdateTimer == null) {
WidgetsBinding.instance.addPostFrameCallback(
(_) => _setBusy(
isBusy: isBusy,
busyMessage: busyMessage ?? _busyMessageDefault,
busyTitle: busyTitle ?? _busyTitleDefault,
busyType: busyType ?? _busyTypeDefault,
onTimeout: onTimeout ?? _onTimeoutDefault,
timeoutDuration: timeoutDuration ?? _timeoutDurationDefault,
payload: payload,
),
);
if (isBusy) {
_allowUpdateTimer = Timer(
minBusyDuration,
() {
if ((_isBusies - _isNotBusies) != 0) {
final isReallyBusy = _isBusies > _isNotBusies;
WidgetsBinding.instance.addPostFrameCallback(
(_) => _setBusy(
isBusy: isReallyBusy,
busyMessage: busyMessage,
busyType: busyType ?? _busyTypeDefault,
busyTitle: busyTitle ?? _busyTitleDefault,
onTimeout: onTimeout ?? _onTimeoutDefault,
timeoutDuration: timeoutDuration ?? _timeoutDurationDefault,
payload: payload,
),
);
_mutex.lockAndRun(
run: (unlock) {
_isBusies = 0;
_isNotBusies = 0;
unlock();
},
);
}
_allowUpdateTimer = null;
},
);
}
} else {
_mutex.lockAndRun(
run: (unlock) {
if (isBusy) {
_isBusies++;
} else {
_isNotBusies++;
}
unlock();
},
);
}
}