如何在同一屏幕上使用具有相同标签的英雄两次?

时间:2020-10-06 19:37:04

标签: flutter dart

我在一个屏幕上有2个水平列表,列表A(新产品)和列表B(最畅销)。列表A的每个产品也可以在列表B中。这是产品小部件。

Column(
      children: [
        Hero(
          tag: product.id,
          child: Image.asset('images/product.jpg'),
        ),
        Text(${product.name)
      ],
    );

假设产品在列表A和列表B中,并且我想使用英雄小部件,该怎么做?因为我尝试过,但给了我一个错误

There are multiple heroes that share the same tag within a subtree.

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我不完全理解您的要求,但是在查看错误时,我只能建议您为Hero标记提供一个product.name值,以解决您的错误。 基本上,您不能对每个带有英雄部件的列表项应用相同的标签名称,因为它应该是唯一的,我也遇到了相同的错误,因此我通过将标签值指定为图像名称来解决了这个问题。

答案 1 :(得分:0)

您可以将“ new”和“ most_selling”添加到标签中,这样您就可以在两个列表中使用两个不同的标签来拥有相同的商品

即 清单A(项目1):

Hero(
   tag: "item_1_new",
   child: //
),

列表B(项目1):

Hero(
   tag: "item_1_most_selling",
   child: //
),