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