AnimationController 未定义命名参数“vsync”

Cha*_*nhm 77 dart flutter animationcontroller

AnimationController 停止工作,因为不知何故 vsync 不再是命名参数。

这行代码停止工作。

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
Run Code Online (Sandbox Code Playgroud)

我在两个不同的应用程序中使用了这个完全相同的代码,在其中一个应用程序中我只是删除了淡入淡出的文本动画作为热修复,但在另一个应用程序中我需要一个真正的修复。最近有人看到这个问题吗?

笔记:

- 这个完全相同的代码已经工作了几个月,但在更新后停止工作。

- 周围的班级确实有: 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();
  }

}
Run Code Online (Sandbox Code Playgroud)
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!
Run Code Online (Sandbox Code Playgroud)

小智 124

在你的 pubspec.yml

将此更改为:

environment:
  sdk: ">=2.8.0 <3.0.0"
Run Code Online (Sandbox Code Playgroud)

flutter pub get

在android studio中然后使缓存无效并重新启动,你应该很高兴!

信用:https : //github.com/flutter/flutter/issues/62752#issuecomment-667744745

  • 在android studio中单击“使缓存无效并重新启动”(文件-&gt;使缓存/重新启动) (17认同)
  • 对于我来说,我还需要一个步骤是重新加载 IDE:D 谢谢,它就像一个魅力。 (4认同)
  • 对于 VSCode,执行“重新启动分析服务器”,按 ctrl+shift+p 打开命令面板,然后输入“analysis”进行搜索。这将使您无需重新启动 IDE (3认同)

Cra*_*enz 34

发生的事情是@required在推出 null-safety 期间将语法迁移到现在只是required. 这是有效的新 Dart,但如果您在编辑器打开的情况下升级,它将具有过时的构建规则。只需运行flutter clean并重新启动您的 IDE,就可以了。

希望不需要重新启动计算机,更改互联网提供商等。


Sha*_*had 22

一些事情(不幸的是没有被指出)可以帮助我解决这样的问题:

**编辑:我建议按顺序执行这些操作,希望在您到达列表末尾之前问题将得到解决。

  • 运行颤振升级
  • 运行 flutter pub get
  • 运行 flutter clean
  • 重启IDE
  • 改变颤振通道
  • 在这种情况下,将最低 SDK 版本从 2.7.0 更改为 2.8.0。

当然,对其中一些策略有一些警告。更有经验的开发人员肯定会提供更多的细节,但我没有遇到这种方法的问题。


Ste*_*aru 18

升级 flutter 后遇到了同样的问题。重新启动 IDE 解决了问题。


小智 13

当我升级到 Flutter 1.22 时遇到了同样的问题。

我正在使用 VS 代码。

只需运行:Flutter Clean在终端中并重新启动您的 IDE。那应该可以解决问题!


Far*_*ukT 8

如果您仍然遇到与 vsync 相同的错误:您 的状态定义中的TickerProviderStateMixin可能没有这个错误

像这样更正你的状态定义

class _BookListState extends State<BookList> with TickerProviderStateMixin {
  final BookHelper _bookHelper = BookHelper.instance;
}
Run Code Online (Sandbox Code Playgroud)


GAU*_*SHI 5

我给出了 5 个步骤,并按照上述相同的顺序应用所有步骤,我认为您的问题将得到解决。

第一步:将pubspec.yaml中的SDK版本改为2.8

environment:
sdk: '>=2.8.0 <3.0.0'
Run Code Online (Sandbox Code Playgroud)

第 2 步:打开终端并运行

flutter upgrade
Run Code Online (Sandbox Code Playgroud)

第 3 步:在第 2 步之后,通过运行此命令获取所有包

flutter pub get 
Run Code Online (Sandbox Code Playgroud)

第四步:然后使用这个命令来清理flutter

flutter clean   
Run Code Online (Sandbox Code Playgroud)

第 5 步:关闭 IDE(如 VS Code、Android Studio),然后重新打开它。就这样!!!

vsync 将再次出现。

除了 vsync,LinearGradient 中的颜色属性也丢失了,在我应用所有这些步骤后,颜色属性和 vsync 重新出现。