【问题标题】:AnimationController The named parameter 'vsync' isn't definedAnimationController 未定义命名参数“vsync”
【发布时间】:2020-11-22 04:59:18
【问题描述】:

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

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

注意:

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

-周边类确实有: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!

【问题讨论】:

  • 你能发布你的类构造函数吗?你尝试在哪里实现你的控制器?
  • 您好 Mariano,我发布了全班同学的编辑。
  • 你也可以发布你的“颤振医生-v”吗?使用单个代码提供程序是否会发生同样的问题?
  • 你可能还有其他同名的班级吗?
  • 我目前遇到了同样的问题。这可能是自上次更新以来引入的一个错误...尝试在flutter GitHub 页面上打开一个问题,如果这个问题像我想的那样广泛传播,它应该很快得到修复。通过在这里查看:github.com/flutter/flutter/commit/…您可以看到 4 天前所做的修改。

标签: flutter dart animationcontroller


【解决方案1】:

升级颤振后遇到同样的问题。重新启动 IDE 解决了这个问题。

【讨论】:

    【解决方案2】:

    在你的pubspec.yml

    将其更改为:

    environment:
      sdk: ">=2.8.0 <3.0.0"
    

    flutter pub get

    在 Android Studio 中使缓存无效并重新启动,你应该很好。

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

    【讨论】:

    • 在android studio中点击“缓存无效并重启”(文件->缓存无效/重启)
    • 对我来说,我还需要一个步骤是重新加载 IDE :D 谢谢,它就像一个魅力。
    • 对于 VSCode,执行“重新启动分析服务器”,按 ctrl+shift+p 调出命令面板并输入“分析”进行搜索。这将使您免于重新启动 IDE
    【解决方案3】:

    flutter升级后。

    1. 重新启动 IDE
    2. 如有必要,请重新启动计算机

    【讨论】:

      【解决方案4】:

      帮助我解决此类问题的几件事(遗憾的是没有明确指出):

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

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

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

      【讨论】:

      • 仅执行前四个步骤即可解决问题。
      【解决方案5】:

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

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

      【讨论】:

      • 编辑器重启修复了它
      【解决方案6】:

      只需重新启动 IDE 即可为我解决此问题

      别忘了继承 Tickerprovider。

      【讨论】:

      • 我先把sdk: "&gt;=2.8.0 &lt;3.0.0"改成pubspec.yml然后重启,不知道哪一个解决了问题。
      【解决方案7】:

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

      我正在使用 VS Code。

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

      【讨论】:

        【解决方案8】:

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

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

        environment:
        sdk: '>=2.8.0 <3.0.0'
        

        第 2 步:打开终端并运行

        flutter upgrade
        

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

        flutter pub get 
        

        第 4 步:然后使用此命令清理颤振

        flutter clean   
        

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

        vsync 将再次出现。

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

        【讨论】:

          【解决方案9】:

          我遇到了同样的问题,我升级了 SDK,然后使缓存无效并重新启动,它对我有用。

          【讨论】:

            【解决方案10】:

            如果你在使用 vsync 时仍然遇到同样的错误:这个 您的状态定义中可能没有 with TickerProviderStateMixin

            像这样更正你的状态定义

            class _BookListState extends State<BookList> with TickerProviderStateMixin {
              final BookHelper _bookHelper = BookHelper.instance;
            }
            

            【讨论】:

            • 这解决了我的问题,谢谢
            【解决方案11】:

            我是如何在 Android Studio 中解决的?

            首先,之前的答案可能是错误的,因为我没有更改我的 SDK 范围

            environment:
              sdk: ">=2.1.0<3.0.0"
            

            我在我的 dart 文件中编写了代码 (vsync),我知道 Android Studio 显示错误但不在乎,只需编写您的代码:

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

            之后,关闭您的项目,然后再次打开它。系统可以自己理解。就这样 ! 你可以看我的截图证明

            【讨论】:

              【解决方案12】:

              在我的情况下,我在 android studio 中设置了 dart 和 Flutter SDK 路径后解决了这个问题。

              【讨论】:

                【解决方案13】:

                如何添加这个,

                类 _AnimationScreenState 扩展状态 ///

                with SingleTickerProviderStateMixin {
                

                /// }

                【讨论】:

                  【解决方案14】:

                  这对我有用

                  将 pubspec.yaml 中的 SDK 版本更改为 '>=2.8.0

                  然后运行以下命令:

                  • 颤振升级
                  • 颤振酒吧获取
                  • 扑干净

                  然后重启IDE

                  【讨论】:

                    【解决方案15】:

                    不要做任何事just invalid the cache and restart your IDE

                    1. 扑干净
                    2. 重启你的IDE

                    【讨论】:

                      【解决方案16】:

                      您必须将该行放在 initState() 方法中,如下所示:

                      @override
                      void initState() {
                      super.initState();
                      _controller = AnimationController(duration: expandDuration, vsync: this);
                      }
                      

                      【讨论】:

                        猜你喜欢
                        • 2022-01-04
                        • 2022-01-02
                        • 1970-01-01
                        • 2020-02-13
                        • 2022-11-01
                        • 2020-06-24
                        • 2018-05-14
                        • 2020-02-16
                        相关资源
                        最近更新 更多