Сделайте ColorTween вперед, чтобы закончить немедленно и полностью изменить назад, не изменяя контроллер в флаттере? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть следующий код:

Animation _colorTween = ColorTween(begin: Colors.black, end: Colors.white).animate(animation);

AnimatedBuilder(
  animation: _colorTween,
  builder: (_, _) => customBuilder(_colorTween.value),
),

Переменная animation из другого виджета, который я не могу изменить вообще.Я даже не могу управлять прямой и обратной анимацией, потому что это контролируется другим встроенным виджетом.

Так что мне интересно, смогу ли я сделать так, чтобы цвет стал Colors.white сразу после вызова форварда.С другой стороны, я в порядке с поведением по умолчанию.

Большое спасибо.

1 Ответ

1 голос
/ 28 мая 2019

Во-первых, я бы не назвал ваш вход. Анимация '_colorTween'. Это просто сбивает с толку, так как это анимация!

Но так как вы уже используете пользовательский конструктор, вы можете сделать что-то подобное в пользовательской функции сборки:

switch(_colorTween.status) {
case AnimationStatus.forward:
  return <Colors.white or something like it>
default:
  return <normal calculation>
}

Хотя это может привести к чему-то немного странному, если анимация будет выполняться на полпути, тогда изменит направление. Вы можете добавить больше логики, чтобы справиться с этим, хотя при необходимости.

...