FadeTransition () Widget nur einmal in flattern animiert?

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

In dem obigen Code - FadeTransition()Widget animiert wird , wenn die Anwendung zum ersten Mal gestartet wird. und die Sichtbarkeit FadeTransition()wird durch das hin- und errorVariable. aber wenn wir das nächste Mal , wenn der FadeTransition()Widget sichtbar ist , wird es nicht animiert?

was fehlt, beim Makel FadeTransition()des Widget sollte jedes Mal animiert wird es scheint!

Veröffentlicht am 02/12/2019 um 23:51
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Eine Sache , die ich bemerkt , ist errorimmer falsch. Es gibt keinen Code auf true zu drehen und es gibt zwei Orte , an denen es auf false gesetzt werden würde. Einer von ihnen in Abhängigkeit davon , ob es wahr ist (was es wird nie sein , da error = truenicht existiert)

That being said, wenn Sie Ihre Animation Lauf machen wollen wieder, wo auch immer Sie diese Eigenschaft sind Makeln (in der Regel in einer der Schaltfläche onTapMethode) Sie haben setState zu nennen. Im setState können Sie entweder

controller.forward(from: 0);
// or
controller.reset(); // stops the animation if in progress
controller.forward();
Beantwortet am 03/12/2019 um 01:01
quelle vom benutzer

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