es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter: AnimationController vsync este problema.

Estoy intentando implementar código del ejemplo de la documentación oficial, pero falla:

...

class _MyHomePageState extends State<MyHomePage> {

Late AnimationController controller;

@override
  void initState() {
    super.initState();

<pre><code>controller = AnimationController(duration: Duration(seconds: 3), vsync: this);
</code></pre>

}

...

enter image description here

Indica que: El tipo de argumento '_MyHomePageState' no se puede asignar al tipo de parámetro 'TickerProvider'.

Por lo tanto, VSCode resalta el parámetro vsync: this.

Tengo la última versión de Flutter:


Flutter 2.5.3 • canal estable • https://github.com/flutter/flutter.git
Framework • revisión 18116933e7 (hace 6 semanas) • 2021-10-15 10:46:35 -0700
Engine • revisión d3ea636dc5
Tools • Dart 2.14.4

¿Por qué ocurre este error y cómo solucionarlo sin degradar la versión del SDK?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error se produce porque la clase _MyHomePageState no implementa la clase TickerProviderStateMixin, la cual proporciona la funcionalidad necesaria de TickerProvider para AnimationController. Para solucionar este error, puedes hacer que la clase _MyHomePageState implemente la clase TickerProviderStateMixin y anular el método de getter TickerProvider.

    Aquí está el código actualizado:

    ...
    
    class _MyHomePageState extends State<myhomepage> with TickerProviderStateMixin {
    
      late AnimationController controller;
    
      @override
      void initState() {
        super.initState();
    
        controller = AnimationController(duration: Duration(seconds: 3), vsync: this);
      }
    
      @override
      Ticker createTicker(TickerCallback onTick) => Ticker(onTick);
    
      ...
    }
    
    

    Al agregar la cláusula with TickerProviderStateMixin a la declaración de la clase, se notifica a la clase que debe implementar la funcionalidad de TickerProvider. Luego, al anular el método de getter createTicker(TickerCallback onTick), se proporciona la instancia necesaria de TickerProvider al AnimationController.

    Con estos cambios, se debe solucionar el error y el AnimationController debería funcionar como se espera.

Comments are closed.