Флаттер: анимационный контроллер синхронизирует эту проблему

0

Вопрос

Я пытаюсь реализовать код из примера официальных документов, но это не удается:

...

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

В нем говорится, что: The argument type '_MyHomePageState' can't be assigned to the parameter type 'TickerProvider'.

Итак, VSCode выделяет vsync: this парам.

У меня есть последняя версия 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

Почему возникает эта ошибка и как ее исправить без понижения версии SDK?

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

Лучший ответ

2

В трепете, ан AnimationController нуждается в TickerProvider.

Когда ан AnimationController создается из State, вы должны иметь State для расширения либо TickerProviderStateMixin или SingleTickerProviderStateMixin. Последнее более оптимизировано для случаев, когда вам нужно использовать только один тикер, что должно быть в большинстве случаев.

Поэтому в коде, который вы опубликовали, вы должны изменить:

class _MyHomePageState extends State<MyHomePage> Для class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin

2021-11-24 00:20:42

Спасибо за ответ, мне следовало быть более осторожным при чтении документации, но проблема отладки не так очевидна, как могла бы быть. Кроме того, многие темы для понижения SDK для решения этой проблемы слишком запутанны.
mr.boris

На других языках

Эта страница на других языках

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