Запустить анимацию после анимации героя во флаттере - PullRequest
0 голосов
/ 10 мая 2019

Я создаю приложение галереи, которое отображает элементы в списке / сетке и при нажатии переходит в подробный вид.Я использую анимацию героя для основного элемента изображения и хочу анимировать части детального вида после перехода героя (исчезновение в fab, слайд в текстах и ​​т. Д.).

Есть ли какое-либо свойство или функция обратного вызова, которую я могу использовать для прослушивания обновлений анимации героя и запуска своей анимации в формате чего-то вроде onAnimationEnd?

Я знаю, что могу "взломать" решение иначать анимацию затухания через 300 мс (это, насколько я помню, длительность анимации героя по умолчанию) после того, как представление выдвинуто на экран, но оно не кажется правильным.

1 Ответ

0 голосов
/ 10 мая 2019

Вы пробовали использовать будущее?

double opacity = 0;

Future < void > showAfter() async {
  await Future.delayed(Duration(seconds: 3), () {
    print('delay completed');
  });
  setState(() {
    opacity = 1;
  });
}

Подсчитайте количество времени анимации героя и установите задержку длительности.

вызов функции внутри initState ()

Затем вы можете обернуть ваш виджет в виджет AnimatedOpacity следующим образом, пока время задержки не будет, все будет там, они просто будут скрыты, и как только он закончится, он будет выглядеть как затухание.

AnimatedOpacity(
  duration: Duration(milliseconds: 300),
  opacity: opacity,
  child: Center(
    child: Column(
      mainAxisSize: MainAxisSize.min,
      children: < Widget > [
        Text("Hello World"),
      ],
    ),
  ),
),

Вы можете разные кривые и длительности

...