FadeTransition () widget è animato solo una volta in sbattimento?

voti
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),
                  ),
                ],
              ),
            ),
          ),    
  ),
}
}

Nel codice di cui sopra FadeTransition()Widget è animato quando l'applicazione viene lanciata. e la visibilità FadeTransition()viene commutato dalla errorvariabile. ma quando la prossima volta il FadeTransition()widget è visibile non è animato?

ciò che manca, quando commutando FadeTransition()il widget dovrebbe essere animato ogni volta che appare!

È pubblicato 02/12/2019 alle 23:51
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Una cosa che ho notato è errorè sempre false. Non esiste un codice di trasformarlo a vero e ci sono due posti dove sarebbe impostata su false. Uno di loro dipende se è vero (che non sarà mai in quanto error = truenon esiste)

Detto questo, se si vuole fare di nuovo la corsa di animazione, dove mai si conversazione alternata questa struttura (di solito in un pulsante di onTapmetodo) si deve chiamare setState. Nella setState è possibile sia l'uso

controller.forward(from: 0);
// or
controller.reset(); // stops the animation if in progress
controller.forward();
Risposto il 03/12/2019 a 01:01
fonte dall'utente

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