FadeTransition () виджет анимированный только один раз в флаттере?

голоса
0
class pin extends StatefulWidget {
@override
_PinState createState() => _PinState();
}

class _PinState extends State<pin> with TickerProviderStateMixin {
AnimationController _controller;
Animation<double> _animation;
bool error = false;


@override
void initState() {
  super.initState();
  this._controller = AnimationController(
      duration: const Duration(milliseconds: 1000), vsync: this);
  this._animation =
      Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(
    parent: _controller,
    curve: Curves.easeIn,
  ));
}

@override
Widget build(BuildContext context) {
  if(this.error) {
    this.error = false;
    _controller.forward();
  }
  return Container(
    child: if (this.error)
            Container(
            child: FadeTransition(
              opacity: _animation,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Image.asset(assets/images/sad_face.png),
                  ),
                ],
              ),
            ),
          ),    
  ),
}
}

В приведенном выше коде FadeTransition()виджета оживляется , когда приложение первого запуска. и видимость FadeTransition()переключается в errorпеременной. но когда в следующий раз , когда FadeTransition()виджет виден он не анимированный?

чего не хватает, когда переключая FadeTransition()виджет должен быть анимированы каждый раз , когда он появляется!

Задан 02/12/2019 в 23:51
источник пользователем
На других языках...                            


1 ответов

голоса
1

Одна вещь , которую я заметил, errorвсегда ложно. Там нет коды , чтобы превратить его в истинный и есть два места , где он будет установлен в ложь. Один из них зависит от того, если это верно (что она никогда не будет , так как error = trueне существует)

Это , как говорится, если вы хотите сделать вашу анимацию бежать снова, где когда - либо вы переключая это свойство ( как правило , в баттоне onTapметоде) вы должны вызвать SetState. В SetState вы можете использовать либо

controller.forward(from: 0);
// or
controller.reset(); // stops the animation if in progress
controller.forward();
Ответил 03/12/2019 в 01:01
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more