我的应用程序是电子商务商店与仪表板有多个列表。LatestProducts
, DiscountProducts
, MostViewedProduct
, ...
我创建多供应商。LatestProductProvider
, DiscountProductProvider
, MostViewedProductProvider
(其实同样的供应商,通过过滤参数得到不同的排序产品)
我不想为每个产品列表创建多个widget。我的主widget重复使用这个单一的widget类。
class _ProductsWidget extends StatelessWidget {
const _ProductsWidget({ Key key, @required this.filter,}) : super(key: key);
final String filter;
@override
Widget build(BuildContext context) {
dynamic productProvider = null;
if (filter == '0') productProvider = Provider.of<LatestProductProvider>(context);
if (filter == '1') productProvider = Provider.of<DiscountProductProvider>(context);
if (filter == '2') productProvider = Provider.of<MostViewedProductProvider>(context);
return SliverToBoxAdapter(
child: ...
...
//use matched productProvider
当我测试我的代码时,我的列表加载了平行的数据,这个图像是我的结果。
在你的模型里面过滤最新的,打折的和最浏览的产品。然后你会一个storeproducts对象。
class StoreProducts{
final List<Product> latest;
final List<Product> mostViewed;
final List<Product> discounted;
//if needed
final List<Product> otherProducts;
StoreProducts(this.latest,this.mostViewed,this.discounted);
}