我使用渡輪和分頁作業將我的應用程式連接到 graphql。現在它在頁面加載時獲取前 25 個結果,然后當我滾動到底部時它獲取下一個 25。下面是執行此操作的代碼。
final getAllPartnerOrganizationsReq = GGetAllPartnerOrganizationsReq(
(b) => b
..requestId = 'MyReviewsReq'
..vars.offset = 0
..vars.limit = 25,
);
void getNextPartnerOrganizations(int offset, int limit) {
final nextGetAllPartnerOrganizationsReq =
getAllPartnerOrganizationsReq.rebuild((b) => b
..requestId = 'MyReviewsReq'
..vars.offset = offset
..vars.limit = limit
..updateResult = (previous, result) {
if (previous == null) {
return result;
}
return previous.rebuild((b) => b
..partnerOrganizations
.addAll(result!.partnerOrganizations!.asList()));
});
client.requestController.add(nextGetAllPartnerOrganizationsReq);
}
@override
void initState() {
super.initState();
client.request(getAllPartnerOrganizationsReq).listen((response) {
for (var i = offset;
i < response.data!.partnerOrganizations!.length;
i ) {
partners.add(response.data!.partnerOrganizations![i]);
}
offset = 25;
setState(() {});
});
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
getNextPartnerOrganizations(offset, 25);
}
});
}
問題:我想要一個完全重置此串列視圖的功能。我有兩個需求,一個是簡單的重繪 圖示,它將串列重置回最初的 25,另一個將作為搜索的一部分,因此如果用戶使用術語搜索,它會洗掉串列并使用這些術語重新獲取。我不需要知道如何使用搜索,我基本上需要一種方法來從 ListView 中洗掉所有內容并回到空白狀態。下面是與 ListView 所在位置相關的代碼。
@override
Widget build(BuildContext context) {
final model = Provider.of<RetailerDetailsModel>(context, listen: false);
return Scaffold(
appBar: AppBar(
title: const Text('Data Management System'),
),
body: LayoutBuilder(
builder: (context, constraints) {
if (partners.isNotEmpty) {
print('partners');
return ListView.separated(
controller: _scrollController,
itemBuilder: (context, index) => Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
leading: kIsWeb
? FadeInImage.assetNetwork(
width: 100,
height: double.infinity,
imageErrorBuilder: (context, index, error) =>
const Text('Failed to load'),
image: 'https://${partners[index].logo}',
placeholder: 'assets/logo.jpg',
)
: CachedNetworkImage(
imageUrl: 'https://${partners[index].logo}',
placeholder: (context, url) =>
const CircularProgressIndicator(),
fit: BoxFit.contain,
width: 100,
height: double.infinity,
),
title: Text(partners[index].companyName),
subtitle: Text(
partners[index].ogDescription ?? 'No Description Set',
maxLines: 3,
),
trailing:
Text(partners[index].ecommTechnology ?? 'Unknown'),
),
uj5u.com熱心網友回復:
由于代碼中未提供變數的定義,因此partners此答案通過查看它在代碼中的使用方式來假定它是某種串列。
要洗掉 中的所有條目ListView,您只需重置此串列即可。
setState((){
partners = [];
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/460040.html
