Во Flutter, что я должен указать в теге Hero?

Я часто получаю сообщения об ошибках «Есть несколько героев с одним и тем же тегом в поддереве».

На данный момент я поставил тег с Uuid().v4(). Я почти уверен, что это будет совершенно случайно. Но я все еще получил эти ошибки.

      Here is the subtree for one of the offending heroes: Hero
  tag: f63e9e14-55e4-4655-ab96-18b8dbbff524
  state: _HeroState#dc119

Как я могу сгенерировать что-то, что будет совершенно случайным при каждом вызове? Или я использовал это Heroвиджет работает некорректно?

      FullScreenWidget(child: Hero(child: image(fit: fit), tag: Uuid().v4()));

2 ответа

Просто укажите один уникальный идентификатор для обоих основных виджетов. Fe

На первом экране

      Screen1(child: Hero(child: image(fit: fit), tag: "Hero1tag"));

На втором экране:

      Screen2(child: Hero(child: image(fit: fit), tag: "Hero1tag"));

Тег должен быть уникальным и стабильным на протяжении всего времени работы вашего приложения.

Он не должен быть уникальным при каждом вызове, он должен быть уникальным для каждого маршрута. Всего их должно быть два, один в качестве тега исходного героя, а другой в качестве тега героя назначения. Вы можете использовать что-то описательное, например . Имейте в виду, что тегом может быть любой другой объект, например или что-то вроде того.

Другие вопросы по тегам