FadeTransition () widget is geanimeerd slechts eenmaal in flutter?

stemmen
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 de bovenstaande code FadeTransition()widget wordt geanimeerd wanneer de app voor het eerst wordt gelanceerd. en de zichtbaarheid van FadeTransition()is gedrukt door de errorvariabele. maar wanneer ik de volgende keer dat de FadeTransition()widget zichtbaar is wordt deze niet geanimeerd?

wat ontbreekt, een wisselgesprek FadeTransition()de widget moet worden geanimeerd elke keer als het lijkt!

De vraag is gesteld op 02/12/2019 om 23:51
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Eén wat mij opviel is erroris altijd vals. Er is geen code in te schakelen om waar en er zijn twee plaatsen waar het zou worden ingesteld op false. Een van hen afhankelijk zijn als het waar is (wat het nooit zal zijn, omdat error = trueniet bestaat)

Dat gezegd zijnde, als u wilt uw animatie run opnieuw te maken, waar dan bent u schakelen Deze accommodatie (meestal in een knop onTapmethode) moet je setstate bellen. In de setstate u kunt gebruik maken van

controller.forward(from: 0);
// or
controller.reset(); // stops the animation if in progress
controller.forward();
antwoordde op 03/12/2019 om 01:01
bron van user

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