我正在发出搜索请求,但返回的数据带有分页类型。我在TextField中的onchanged
函数中有,这样每当我键入内容时,它都会发出get请求。我键入的第一个字母工作正常,但当我再次键入时,什么也没有发生。
这就是我在onChanged
函数中的内容
onChanged: (value) {
_pagingController.addPageRequestListener(
(pageKey) {
_fetchPage(pageKey, val.trim());
},
);
},
下面是我的_fetchPageFunction
Future<void> _fetchPage(int pageKey, String searchParam) async {
final results = await searchRepo.getCareers(
isSearching: true,
searchParam: searchParam,
token: token,
page: pageKey,
);
hasNextPage = results['hasNextPage'];
newItems.clear();
newItems = results['schools'];
print(newItems.length);
if (!hasNextPage) {
_pagingController.appendLastPage(newItems);
} else {
final nextPageKey = pageKey + 1;
_pagingController.appendPage(newItems, nextPageKey);
}
} catch (error) {
_pagingController.error = error.toString();
}
}
下面是我的用户界面
PagedListView<int, dynamic>(
shrinkWrap: true,
pagingController: _pagingController,
builderDelegate: PagedChildBuilderDelegate<dynamic(
itemBuilder: (context, item, index) {
return ListTile(
leading: InitialsAvatar(name: item.name),
title: Text(
item.name ?? 'n/a',
style: theme.textTheme.bodyText1,
),
subtitle: Text(
item.category,
style: theme.textTheme.labelMedium,
),
);
},
),
),
我试着在_fetchPage
函数后删除pageRequestLister,但没有成功。有什么方法可以做到这一点吗?如果这不可能,有没有其他软件包可以为我工作?
1条答案
按热度按时间nhn9ugyo1#
尝试在
onChanged()
中添加_pagingController.refresh();
。