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>
}
...
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?
davy.ai
El error se produce porque la clase
_MyHomePageState
no implementa la claseTickerProviderStateMixin
, la cual proporciona la funcionalidad necesaria deTickerProvider
paraAnimationController
. Para solucionar este error, puedes hacer que la clase_MyHomePageState
implemente la claseTickerProviderStateMixin
y anular el método de getterTickerProvider
.Aquí está el código actualizado:
Al agregar la cláusula
with TickerProviderStateMixin
a la declaración de la clase, se notifica a la clase que debe implementar la funcionalidad deTickerProvider
. Luego, al anular el método de gettercreateTicker(TickerCallback onTick)
, se proporciona la instancia necesaria deTickerProvider
alAnimationController
.Con estos cambios, se debe solucionar el error y el
AnimationController
debería funcionar como se espera.