registerCallbacks method

FileDownloader registerCallbacks({
  1. String group = defaultGroup,
  2. TaskStatusCallback? taskStatusCallback,
  3. TaskProgressCallback? taskProgressCallback,
  4. TaskNotificationTapCallback? taskNotificationTapCallback,
})

Register status or progress callbacks to monitor download progress, and TaskNotificationTapCallback to respond to user tapping a notification.

Status callbacks are called only when the state changes, while progress callbacks are called to inform of intermediate progress.

Note that callbacks will be called based on a task's updates property, which defaults to status change callbacks only. To also get progress updates make sure to register a TaskProgressCallback and set the task's updates property to Updates.progress or Updates.statusAndProgress.

For notification callbacks, make sure your AndroidManifest includes android:launchMode="singleTask" to ensure proper behavior when a notification is tapped.

Different callbacks can be set for different groups, and the group can be passed on with the Task to ensure the appropriate callbacks are called for that group. For the taskNotificationTapCallback callback, the defaultGroup callback is used when calling 'convenience' functions like FileDownloader().download

The call returns the FileDownloader to make chaining easier

Implementation

FileDownloader registerCallbacks(
    {String group = defaultGroup,
    TaskStatusCallback? taskStatusCallback,
    TaskProgressCallback? taskProgressCallback,
    TaskNotificationTapCallback? taskNotificationTapCallback}) {
  assert(
      taskStatusCallback != null ||
          taskProgressCallback != null ||
          taskNotificationTapCallback != null,
      'Must provide at least one callback');
  if (taskStatusCallback != null) {
    _downloader.groupStatusCallbacks[group] = taskStatusCallback;
  }
  if (taskProgressCallback != null) {
    _downloader.groupProgressCallbacks[group] = taskProgressCallback;
  }
  if (taskNotificationTapCallback != null) {
    _downloader.groupNotificationTapCallbacks[group] =
        taskNotificationTapCallback;
  }
  return this;
}