selectData<Selected> method

AsyncValue<Selected> selectData<Selected>(
  1. Selected selector(
    1. T data
    )
)

Позволяет выбирать часть из состояния провайдера, похож на AsyncValue.whenData, но поддерживает skipLoadingOnReload, skipLoadingOnRefresh и skipError

Implementation

AsyncValue<Selected> selectData<Selected>(
  Selected Function(T data) selector,
) {
  return when<AsyncValue<Selected>>(
    data: (data) {
      final asyncData = AsyncData(selector(data));

      if (isLoading) {
        return AsyncLoading<Selected>().copyWithPrevious(asyncData);
      }

      return asyncData;
    },
    error: (e, s) {
      final asyncError = AsyncError<Selected>(e, s);

      if (hasValue) {
        return asyncError.copyWithPrevious(
          AsyncData(selector(value as T)),
          isRefresh: false,
        );
      }

      return asyncError;
    },
    loading: () {
      final asyncLoading = AsyncLoading<Selected>();

      if (hasValue) {
        return asyncLoading.copyWithPrevious(
          AsyncData(selector(value as T)),
          isRefresh: false,
        );
      }

      return asyncLoading;
    },
  );
}