mEasyGetPageData<T> function

Future<IndicatorResult> mEasyGetPageData<T>({
  1. required Future<List<T>?> reqData,
  2. required MPageState<T> mPageState,
  3. List<T>? handleData(
    1. List<T> value
    )?,
  4. EasyRefreshController? easyRefreshController,
})

如果子组件有包含可滑动组件。 要套一个EasyRefresh来隔绝其他的EasyRefresh,防止EasyRefresh的 child 里面有滑动的内容造成层级错误。

Implementation

// return EasyRefresh(
// controller: EasyRefreshController(),
// child:
/// ```
Future<easy.IndicatorResult> mEasyGetPageData<T>({
  required Future<List<T>?> reqData,
  required MPageState<T> mPageState,
  List<T>? Function(List<T> value)? handleData,
  EasyRefreshController? easyRefreshController,
}) async {
  easy.IndicatorResult result = easy.IndicatorResult.success;

  try {
    List<T>? value = await reqData;
    if (value == null) {
      mPageState.error.value = true;
      result = easy.IndicatorResult.fail;
    } else {
      if (handleData != null) {
        value = handleData(value);
      }
      if (mPageState.goPage == 1) {
        mPageState.dataList.value = value!;
      } else {
        mPageState.dataList.addAll(value!);
      }
      if (mPageState.goPage > 1) {
        // Check if there is no more data
        if (value.length < MConfig.pageLimit) {
          result = easy.IndicatorResult.noMore;
        }
      }
      mPageState.error.value = false;
    }
  } catch (e, s) {
    mLogger.e('message::$e, stack::${s.toString()}');
    mPageState.error.value = true;
  } finally {
    mPageState.isLoading.value = false;
  }
  if (easyRefreshController != null) {
    if (mPageState.goPage > 1) {
      easyRefreshController.finishLoad(result, true);
    } else if (mPageState.goPage <= 1) {
      easyRefreshController.finishRefresh(result, true);
      easyRefreshController.resetFooter();
    }
  }
  return result;
}