setBusy method

void setBusy(
  1. bool isBusy, {
  2. Duration minBusyDuration = kValuesMinBusyDuration,
  3. String? busyMessage,
  4. String? busyTitle,
  5. BusyType? busyType,
  6. Duration? timeoutDuration,
  7. VoidCallback? onTimeout,
  8. dynamic payload,
})

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();
      },
    );
  }
}