#flutter #dart
#flutter #dart
Вопрос:
У меня есть 2 горизонтальных списка, список A (новые продукты) и список B (самые продаваемые), на одном экране. Каждый продукт из списка A также может быть в списке B. Это вкратце виджет продукта.
Column(
children: [
Hero(
tag: product.id,
child: Image.asset('images/product.jpg'),
),
Text(${product.name)
],
);
предположим, что продукт находится в списке A и списке B, и я хочу использовать виджет hero, как это сделать? потому что я попробовал, и это выдало мне ошибку
There are multiple heroes that share the same tag within a subtree.
Я был бы очень признателен за вашу помощь!
Комментарии:
1.
Hero
Виджет предназначен для обеспечения анимации перехода между тем, что в противном случае было бы двумя разными виджетами на двух разных экранах. Вы не можетеHero
одновременно отображать два виджета с одним и тем же ключом на одном экране, и я не уверен, зачем вам это нужно.
Ответ №1:
Я не совсем понял, о чем вы спрашиваете, но, глядя на ошибку, я могу только предложить вам присвоить вашему тегу Hero значение как product.name что позволит устранить вашу ошибку. По сути, вы не можете применить одно и то же имя тега ко всем элементам списка с помощью виджета hero, поскольку оно должно быть уникальным, я также столкнулся с той же ошибкой и решил ее, указав значение тега в качестве имени изображения.
Комментарии:
1. да, у каждого продукта есть уникальный идентификатор, но я хочу, чтобы один и тот же продукт был в двух разных списках
2. @AliAlqallaf В этом случае вы можете добавить значение своего тега product.name с _list1 для первого ListView и _list2 для второго или любой дополнительной строки, которая вам может понадобиться. Возможно, это не тот ответ, который вы ищете, но это может решить вашу проблему.
Ответ №2:
Вы можете добавить «new» и «most_selling» к своим тегам, таким образом, у вас может быть один и тот же элемент в обоих списках с 2 разными тегами
т.е. Список A (пункт 1):
Hero(
tag: "item_1_new",
child: //
),
Список B (пункт 1):
Hero(
tag: "item_1_most_selling",
child: //
),
Ответ №3:
Если вы пытаетесь придать виджетам анимацию героя без навигации, я думаю, этот пакет может вам помочь: https://pub.dev/packages/local_hero