Vibração: AnimationController vsync esse problema

0

Pergunta

Estou tentando implementar o código de oficial docs exemplo , mas não consegue:

...

class _MyHomePageState extends State<MyHomePage> {

  late AnimationController controller;

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

    controller = AnimationController(duration: Duration(seconds: 3), vsync: this);
  }

...

enter image description here

Ele diz que: The argument type '_MyHomePageState' can't be assigned to the parameter type 'TickerProvider'.

Assim, VSCode destaques vsync: this param.

Eu tenho a versão mais recente do Flutter:

Flutter 2.5.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 18116933e7 (6 weeks ago) • 2021-10-15 10:46:35 -0700
Engine • revision d3ea636dc5
Tools • Dart 2.14.4

Por que este erro ocorre e como resolver isso sem fazer o downgrade de versão do SDK?

dart flutter flutter-animation
2021-11-23 23:19:38
1

Melhor resposta

2

No Flutter, um AnimationController precisa de um TickerProvider.

Quando um AnimationController está a ser criado a partir de um State, você deve ter o State para estender-se TickerProviderStateMixin ou SingleTickerProviderStateMixin. O último é o mais otimizado para quando você só precisa usar um único ticker, que deve ser a maioria dos casos.

Assim, no código que você postou, você deve alterar:

class _MyHomePageState extends State<MyHomePage>para class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin

2021-11-24 00:20:42

Obrigado pela resposta, eu deveria ter sido mais cuidadoso ao ler a documentação, mas de depuração problema sugerindo que não é tão óbvio como ele poderia ser. Também muitos tópicos para fazer o downgrade de SDK para resolver este problema são confusos demais.
mr.boris

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................