如何使用单一小部件与多个供应商?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用单一小部件与多个供应商?相关的知识,希望对你有一定的参考价值。

  1. 我的应用程序是电子商务商店与仪表板有多个列表。LatestProducts, DiscountProducts, MostViewedProduct, ...

  2. 我创建多供应商。LatestProductProvider, DiscountProductProvider, MostViewedProductProvider(其实同样的供应商,通过过滤参数得到不同的排序产品)

  3. 我不想为每个产品列表创建多个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);
}

以上是关于如何使用单一小部件与多个供应商?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新导航抽屉中的有状态小部件,同时在 Android 中保持与片段相同的类?

如何将单个小部件与多个提供程序一起使用?

单击主屏幕小部件时如何打开特定片段

此应用小部件片段中所有意图 (PendingIntents) 的逻辑流

QT3D Multiview - 小部件中的单一视图

具有相同布局的多个片段