我有动态的tabbarview和基于后端的数据。每个tabbarview都有catalogId与项目列表一起显示。有时基于商家只有3或2个tabbarview。为了实现保留和持久性,我认为最简单的方法是将 mixin 与 AutomaticKeepAliveClientMixin 结合使用。
这是我用于动态Tabbarview的代码:
Widget _showCatalogItem(CatalogsResponse catalog) {
List<Widget> itemContainer = <Widget>[];
for (var i = 1; i < catalog.data.length + 1; i++) {
itemContainer.add(
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Container(
child: Column(
children: <Widget>[
MerchantListItems(
// showModal: _modalBottomSheet,
showModal: _showProductDetail,
catalogId: i,
merchant: widget.merchant),
],
),
),
),
);
}
return TabBarView(
children: itemContainer,
);
}
我在MerchantListItems上放置了 mixin 。
结果是当我滑动到当前的tabbarview时,ist确实保持生命。但另一个tabbarview始终与上次请求具有相同的数据,然后再加载。
所以如果我有4个选项卡视图A(数据:1),B(数据:2),C(数据:3),D(数据:4)。 第一次加载tabbarview是正常的,当加载tabbarview B时,结果为A(数据:2),B(数据:2),C(数据:3),D(数据:4)。滑动到Tabbarview C,结果为A(数据:3),B(数据:3),C(数据:3),D(数据:4),依此类推。如何正确保留动态Tabbarview?