Flutter: AnimationController vsync tento problém

0

Otázka

Snažím se implementovat kód z oficiální dokumenty příklad , ale to selže:

...

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

To říká, že: The argument type '_MyHomePageState' can't be assigned to the parameter type 'TickerProvider'.

Takže, VSCode zdůrazňuje vsync: this param.

Mám nejnovější verzi Flutteru:

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

Proč k této chybě dochází, a jak to opravit bez snížení SDK verze?

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

Nejlepší odpověď

2

V Flutter, AnimationController potřebuje TickerProvider.

Když AnimationController je vytvořen z Statebyste měli mít State rozšířit buď TickerProviderStateMixin nebo SingleTickerProviderStateMixin. Ta je více optimalizované, když stačí použít jediný ticker, který by měl být většině případu.

Takže v kódu vás informovat, že byste měli změnit:

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

2021-11-24 00:20:42

Děkuji za odpověď, měla jsem být více opatrní při čtení dokumentace, ale ladit otázka naznačuje, není tak zřejmé, jak by to mohlo být. Také mnoho témat k oslabení SDK, aby tento problém vyřešit jsou matoucí moc.
mr.boris

V jiných jazycích

Tato stránka je v jiných jazycích

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