ffRefreshResult method
dynamic
ffRefreshResult(
- bool isHead,
- dynamic api(
- IRefreshParam? iRefreshParam
- FFScaffoldState? state, {
- IRefreshParam? iRefreshParam,
override
处理结果
Implementation
@override
ffRefreshResult(bool isHead, Function(IRefreshParam? iRefreshParam) api,
FFScaffoldState? state,
{IRefreshParam? iRefreshParam}) async {
if (isHead) {
ffrefreshApiStatus = RefreshApiStatus.status_refreshing_head;
} else {
ffrefreshApiStatus = RefreshApiStatus.status_refreshing_foot;
}
if (isHead) {
setPage(1);
}
//开始请求
MFFRequestControl requestControl = MFFRequestControl();
//拿到结果
IFFR r = await requestControl.ffApiIs(api, iRefreshParam);
ffrefreshApiStatus = RefreshApiStatus.status_none;
///错误页 无数据也能刷新 需要处理
if (r.rStatus == RStatus.noData || r.rStatus == RStatus.error) {
if (refreshController.headerStatus == RefreshStatus.refreshing) {
if (r.rStatus == RStatus.error) {
refreshController.refreshFailed();
} else if (r.rStatus == RStatus.noData) {
refreshController.refreshCompleted();
}
}
}
//根据请求结果区分
if (isHead == true) {
ffDidMaxNumber(false);
//头刷新
switch (r.rStatus) {
case RStatus.result: //有结果
{
state?.datas = [];
if (!FFEmpty.listIsEmpty(r.data)) {
List dataList = r.data as List;
for (int i = 0; i < dataList.length; i++) {
state?.datas.add(dataList[i]);
}
}
setPage(getPage() + 1);
if (state?.iffScaffold.ffPageStatus == FFPageStatus.firstLoading) {
//当前是第一次进来
state?.iffScaffold.ffPageStatus = FFPageStatus.result;
} else if (state?.iffScaffold.ffPageStatus == FFPageStatus.result) {
state?.iffScaffold.ffPageStatus = FFPageStatus.result;
// 当前结果页
ffRefreshCompleted(
resultStatus: RefreshResultStatus.status_result);
} else if (state?.iffScaffold.ffPageStatus ==
FFPageStatus.netError ||
state?.iffScaffold.ffPageStatus == FFPageStatus.noData) {
//当前错误页 或者 无数据页
ffRefreshCompleted(
resultStatus: RefreshResultStatus.status_result);
await Future.delayed(duration, () {
state?.iffScaffold.ffPageStatus = FFPageStatus.result;
});
}
break;
}
case RStatus.noData:
{
if (state?.iffScaffold.ffPageStatus == FFPageStatus.netError ||
state?.iffScaffold.ffPageStatus == FFPageStatus.result) {
//从错误页过来
await Future.delayed(duration, () {
state?.iffScaffold.ffPageStatus = FFPageStatus.noData;
});
} else {
state?.iffScaffold.ffPageStatus = FFPageStatus.noData;
}
break;
}
case RStatus.error:
{
if (state?.iffScaffold.ffPageStatus == FFPageStatus.noData ||
state?.iffScaffold.ffPageStatus == FFPageStatus.result) {
//从无数据页过来
await Future.delayed(duration, () {
state?.iffScaffold.ffPageStatus = FFPageStatus.netError;
});
} else {
state?.iffScaffold.ffPageStatus = FFPageStatus.netError;
}
break;
}
case RStatus.timeout:
{
state?.iffScaffold.ffPageStatus = FFPageStatus.netError;
break;
}
}
} else {
//尾刷新
switch (r.rStatus) {
case RStatus.result: //有结果
{
state?.datas.addAll(r.data);
int length = state?.datas.length ?? 0;
int maxLength = ffMaxNumberOfLines() ?? 999999999;
if (length > maxLength) {
//超过了最大的值
var obj = state?.datas.sublist(0, maxLength);
state?.datas = obj ?? [];
ffDidMaxNumber(true);
ffLoadComplete(resultStatus: RefreshResultStatus.status_noData);
} else {
ffDidMaxNumber(false);
setPage(getPage() + 1);
ffLoadComplete(resultStatus: RefreshResultStatus.status_result);
}
break;
}
case RStatus.noData:
{
ffLoadComplete(resultStatus: RefreshResultStatus.status_noData);
break;
}
case RStatus.error:
{
ffLoadComplete(resultStatus: RefreshResultStatus.status_netErr);
break;
}
case RStatus.timeout:
{
ffLoadComplete(resultStatus: RefreshResultStatus.status_timeout);
break;
}
}
}
state?.setState(() {});
}