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

Posted

技术标签:

【中文标题】如何将单个小部件与多个提供程序一起使用?【英文标题】:How to use single widget with multiple providers? 【发布时间】:2020-08-25 03:42:57 【问题描述】:

    我的应用是电子商务商店,仪表板有多个列表:LatestProductsDiscountProductsMostViewedProduct、...

    我创建了多个提供者:LatestProductProviderDiscountProductProviderMostViewedProductProvider (实际上具有过滤参数的相同提供程序会获得不同的排序产品)

    我不想为每个产品列表创建多个小部件。我的主要小部件重用了这个单一的小部件类:

     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
    

如何对上述场景进行编码? 当我测试我的代码时,我的列表会加载并行数据。这张图片是我的结果:

Result in image

【问题讨论】:

【参考方案1】:

过滤模型中的最新、打折和浏览次数最多的产品。然后,您将创建一个 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);

【讨论】:

您好,您建议我使用 One 提供商。但我想要一个具有多提供商模型的小部件。

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

将 QGraphicsDropShadowEffect 与多个小部件一起使用

如何将列表视图与其他小部件一起使用?

如何在 Flutter 中对齐单个小部件?

如何在单个应用程序中使用应用程序小部件创建 android 应用程序

如何在窗口小部件中放置多个字体

使用多个小部件进行委托