Во 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"));
Тег должен быть уникальным и стабильным на протяжении всего времени работы вашего приложения.
Он не должен быть уникальным при каждом вызове, он должен быть уникальным для каждого маршрута. Всего их должно быть два, один в качестве тега исходного героя, а другой в качестве тега героя назначения. Вы можете использовать что-то описательное, например