AnimationController Именованный параметр vsyn c не определен - PullRequest
10 голосов
/ 01 августа 2020

AnimationController перестал работать, потому что почему-то vsyn c больше не является именованным параметром.

Эта строка кода перестала работать.

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

Теперь отображается сообщение об ошибке:

The named parameter 'vsync' isn't defined.
Try correcting the name to an existing named parameter's name, or defining a named parameter with the name 'vsync'.dartundefined_named_parameter

Я использую тот же самый код в двух разных приложениях, в одном из них я просто удалил исчезающую текстовую анимацию в качестве исправления, но в другом приложении мне нужно реальное исправление . Кто-нибудь видел эту проблему в последнее время?

Примечание:

-Этот точно такой же код работал несколько месяцев и перестал работать после обновления.

-В окружающем классе действительно есть : with TickerProviderStateMixin

class FadingText extends StatefulWidget {
  final String text;
  final int seconds;
  final TextStyle style;

  FadingText({this.text, this.seconds, this.style});

  @override
  _FadingTextState createState() => _FadingTextState();
}

class _FadingTextState extends State<FadingText> with TickerProviderStateMixin {
  AnimationController controller;
  Animation animation;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: FadeTransition(
        opacity: animation,
        child: Text(widget.text, style: widget.style,),
      ),
    );
  }

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

    controller = AnimationController(duration: Duration(seconds: widget.seconds), vsync: this);
    animation = Tween(begin: 0.5, end: 1.0).animate(controller);

    animation.addStatusListener((status) {
      if (status == AnimationStatus.completed) { controller.reverse(); }
      else if (status == AnimationStatus.dismissed) { controller.forward(); }
    });

    controller.forward();
  }


  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

}
Flutter Doctor


[✓] Flutter (Channel master, 1.21.0-6.0.pre.140, on Mac OS X 10.15.5 19F101, locale en-MX)
    • Flutter version 1.21.0-6.0.pre.140 at /Users/luisharo/Developer/flutter
    • Framework revision 7884420a0a (25 hours ago), 2020-07-31 20:20:00 +0200
    • Engine revision 280bbfc763
    • Dart version 2.10.0 (build 2.10.0-2.0.dev bd528bfbd6)

 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/luisharo/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.8.4

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] IntelliJ IDEA Community Edition (version 2019.2.4)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.8052

[✓] VS Code (version 1.47.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.13.1

[✓] Connected device (4 available)
    • JKM LX3 (mobile)       • 7MLNW19723003608                     • android-arm64  • Android 9 (API 28)
    • iPhone 11 Pro (mobile) • 675C24C4-7682-4DFE-8037-062893405EE7 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-13-5
      (simulator)
    • Web Server (web)       • web-server                           • web-javascript • Flutter Tools
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 84.0.4147.105

• No issues found!

Ответы [ 5 ]

14 голосов
/ 03 августа 2020

в вашем pubspec.yml

измените это на:

environment:
  sdk: ">=2.8.0 <3.0.0"

и flutter pub get

в android studio, затем аннулируйте кеш и перезапустите, вы должно соответствовать go!

Кредит: https://github.com/flutter/flutter/issues/62752#issuecomment -667744745

2 голосов
/ 18 августа 2020

Произошло то, что синтаксис @required был перенесен во время развертывания нулевой безопасности, чтобы теперь просто required. Это действительный новый Dart, но если вы обновите его с открытым редактором, правила сборки будут устаревшими. Просто запустите flutter clean и перезапустите IDE, и это должно сделать это.

Надеюсь, нет необходимости перезагружать компьютер, менять поставщиков inte rnet и т.д. c.

1 голос
/ 03 августа 2020

Была такая же проблема после обновления флаттера. Проблема была устранена перезапуском IDE.

0 голосов
/ 08 августа 2020

Несколько вещей (к сожалению, не выявленных), которые помогают мне с такими проблемами:

  • запустить обновление flutter
  • запустить flutter pub get
  • запустить flutter clean
  • перезапустить IDE
  • изменить канал флаттера
  • и в этом случае изменить минимальную версию SDK с 2.7.0 на 2.8.0.

Конечно, есть предостережения относительно некоторых из этих тактик. Более опытные разработчики наверняка предложат более подробную информацию, но я не сталкивался с проблемами при таком подходе.

0 голосов
/ 07 августа 2020

После обновления флаттера.

  1. Перезагрузка IDE
  2. При необходимости перезагрузите компьютер
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...