Flutter: как отключить анимацию героя, когда виджет выходит за пределы экрана в ListView

У меня проблема, когда я использую HeroWidget в ListViews.

Вот вариант использования: у меня есть 2 страницы. На странице 1 есть HeroWidget. Page2 имеет ListView с HeroWidget в начале.

Щелкнув на странице 1, HeroWidget перейдет на страницу 2 без проблем.

Проблема в том, что после того, как я прокрутил список на странице 2 и позволил HeroWidget спрыгнуть с экрана. Затем вернитесь со страницы 2 на страницу 1 и увидите странную анимацию. (поскольку HeroWidget не отображается на экране).

Могу ли я отключить эту анимацию героя, когда виджет героя не отображается на экране?

Обходной путь, который у меня есть, — использовать visibility_detector (https://pub.dev/packages/visibility_detector), чтобы отключить героя, когда видимость равна 0.

Но этому виджету нужен GlobaleKey, мне нужно добавить много GlobaleKey в список, он заставляет меня беспокоиться, что у него проблемы с производительностью

1 ответ

Вы можете использовать виджет HeroMode — просто оберните виджет Hero с помощью HeroMode и при необходимости обработайте флаг включения.

См. соответствующий ответ здесь: /questions/64005964/est-li-sposob-predotvratit-perehod-geroya-na-opredelennyih-marshrutah/65763873#65763873

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