Flutter: AnimationController vsync ce problème

0

La question

Je suis en train de mettre en œuvre le code de officiel docs exemple , mais il échoue:

...

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

Il est dit que: The argument type '_MyHomePageState' can't be assigned to the parameter type 'TickerProvider'.

Donc, VSCode faits saillants vsync: this param.

J'ai la dernière version de Flottement:

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

Pourquoi cette erreur se produit et comment résoudre ce problème sans déclassement de la version du SDK?

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

La meilleure réponse

2

Dans Flutter, une AnimationController besoin d'un TickerProvider.

Lorsqu'un AnimationController est créé à partir d'un State, vous devriez avoir le State pour prolonger ce soit TickerProviderStateMixin ou SingleTickerProviderStateMixin. Ce dernier est plus optimisé pour quand vous avez seulement besoin d'utiliser un seul symbole, qui doit être la plupart des cas.

Ainsi, dans le code que vous avez posté, vous devriez changer:

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

2021-11-24 00:20:42

Merci pour la réponse, j'aurais été plus prudent lors de la lecture de la documentation, mais le débogage question suggère, c'est pas si évident que ça pourrait être. Aussi de nombreux sujets de rétrogradation du SDK pour résoudre ce problème sont source de confusion trop.
mr.boris

Dans d'autres langues

Cette page est dans d'autres langues

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