AnimationController 命名参数 'vsync' 未定义
AnimationController The named parameter 'vsync' isn't defined
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
我在两个不同的应用程序中使用了完全相同的代码,在其中一个应用程序中,我只是删除了淡入淡出的文本动画作为热修复程序,但在另一个应用程序中,我需要一个真正的修复程序。最近有人遇到过这个问题吗?
注:
-这个完全相同的代码已经工作了几个月,并在更新后停止工作。
-周围class确实有: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!
升级flutter后出现同样的问题。重新启动 IDE 解决了问题。
在你的pubspec.yml
将其更改为:
environment:
sdk: ">=2.8.0 <3.0.0"
和flutter pub get
在 Android Studio 中使缓存无效并重新启动,您应该可以开始了。
来源:https://github.com/flutter/flutter/issues/62752#issuecomment-667744745
flutter升级后
- 正在重新启动 IDE
- 如有必要,请重新启动计算机
有几件事(不幸的是没有明确指出)可以帮助我解决这样的问题:
**编辑:我建议按顺序执行这些操作,希望问题能在您到达列表末尾之前得到解决。
- 运行颤动升级
- 运行 flutter pub get
- 运行扑干净
- 重启IDE
- 更改 flutter 频道
- 在这种情况下,
将最低 SDK 版本从 2.7.0 更改为 2.8.0。
当然,其中一些策略需要注意。更有经验的开发人员肯定会提供更多详细信息,但我没有遇到这种方法的问题。
发生的事情是 @required
语法在 null-safety 推出期间被迁移到现在只是 required
。这是有效的 new-Dart,但如果您在打开编辑器的情况下升级,它将有过时的构建规则。只需 运行 flutter clean
并重新启动您的 IDE,就可以了。
希望不需要重新启动计算机、更改互联网提供商等
只需重新启动 IDE 即可为我解决此问题
并且不要忘记继承 Tickerprovider。
当我升级到 Flutter 1.22 时,我 运行 遇到了同样的问题。
我正在使用 VS Code。
只需在终端中 运行: Flutter Clean
并重新启动您的 IDE。这应该可以解决问题![=11=]
我已经给出了 5 个步骤,并按照上述相同的顺序应用所有步骤,我认为您的问题会得到解决。
第 1 步:将 pubspec.yaml 中的 SDK 版本更改为 2.8
environment:
sdk: '>=2.8.0 <3.0.0'
第 2 步:打开终端并 运行
flutter upgrade
第 3 步:在第 2 步之后,通过 运行 执行此命令
获取所有包
flutter pub get
第四步:然后用这个命令清理flutter
flutter clean
第 5 步:关闭 IDE(如 VS Code、Android Studio),然后重新打开。
就这些了!!!
vsync 将再次出现。
除了 vsync 之外,LinearGradient 中的颜色 属性 也丢失了,在我应用所有这些步骤后,颜色 属性 和 vsync 重新出现。
我遇到了同样的问题,我升级了 SDK,然后使缓存无效并重新启动,它对我有用。
如果您仍然遇到与 vsync 相同的错误:这
你可能没有 with TickerProviderStateMixin 在你的状态定义
像这样更正您的状态定义
class _BookListState extends State<BookList> with TickerProviderStateMixin {
final BookHelper _bookHelper = BookHelper.instance;
}
我是如何在 Android Studio 中解决的?
首先,之前的答案可能是错误的,因为我没有更改我的 SDK 范围:
environment:
sdk: ">=2.1.0<3.0.0"
我在我的 dart 文件中编写了代码 (vsync),我知道 Android Studio 显示错误,但 不关心 ,只需编写您的代码:
AnimationController _animationController = AnimationController(
duration: Duration(seconds: 3),
vsync: this,
);
之后,关闭您的项目,然后再次打开它。系统可以自己理解。就这样 ! 你可以看我的截图证明:
在我的例子中,我在 android studio 中设置了 dart 和 flutter SDK 路径后解决了这个问题。
添加这个怎么样,
class _AnimationScreenState 扩展状态
///
with SingleTickerProviderStateMixin {
///
}
这对我有用
将pubspec.yaml中的SDK版本更改为'>=2.8.0 <3.0.0'
然后 运行 以下命令:
- flutter升级
- flutter pub get
- 颤抖干净
并重启IDE
什么都不做just invalid the cache and restart your IDE
- 颤动干净
- 重启你的IDE
您必须将该行放在 initState() 方法中,如下所示:
@override
void initState() {
super.initState();
_controller = AnimationController(duration: expandDuration, vsync: this);
}
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
我在两个不同的应用程序中使用了完全相同的代码,在其中一个应用程序中,我只是删除了淡入淡出的文本动画作为热修复程序,但在另一个应用程序中,我需要一个真正的修复程序。最近有人遇到过这个问题吗?
注:
-这个完全相同的代码已经工作了几个月,并在更新后停止工作。
-周围class确实有: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!
升级flutter后出现同样的问题。重新启动 IDE 解决了问题。
在你的pubspec.yml
将其更改为:
environment:
sdk: ">=2.8.0 <3.0.0"
和flutter pub get
在 Android Studio 中使缓存无效并重新启动,您应该可以开始了。
来源:https://github.com/flutter/flutter/issues/62752#issuecomment-667744745
flutter升级后
- 正在重新启动 IDE
- 如有必要,请重新启动计算机
有几件事(不幸的是没有明确指出)可以帮助我解决这样的问题:
**编辑:我建议按顺序执行这些操作,希望问题能在您到达列表末尾之前得到解决。
- 运行颤动升级
- 运行 flutter pub get
- 运行扑干净
- 重启IDE
- 更改 flutter 频道
- 在这种情况下, 将最低 SDK 版本从 2.7.0 更改为 2.8.0。
当然,其中一些策略需要注意。更有经验的开发人员肯定会提供更多详细信息,但我没有遇到这种方法的问题。
发生的事情是 @required
语法在 null-safety 推出期间被迁移到现在只是 required
。这是有效的 new-Dart,但如果您在打开编辑器的情况下升级,它将有过时的构建规则。只需 运行 flutter clean
并重新启动您的 IDE,就可以了。
希望不需要重新启动计算机、更改互联网提供商等
只需重新启动 IDE 即可为我解决此问题
并且不要忘记继承 Tickerprovider。
当我升级到 Flutter 1.22 时,我 运行 遇到了同样的问题。
我正在使用 VS Code。
只需在终端中 运行: Flutter Clean
并重新启动您的 IDE。这应该可以解决问题![=11=]
我已经给出了 5 个步骤,并按照上述相同的顺序应用所有步骤,我认为您的问题会得到解决。
第 1 步:将 pubspec.yaml 中的 SDK 版本更改为 2.8
environment:
sdk: '>=2.8.0 <3.0.0'
第 2 步:打开终端并 运行
flutter upgrade
第 3 步:在第 2 步之后,通过 运行 执行此命令
获取所有包flutter pub get
第四步:然后用这个命令清理flutter
flutter clean
第 5 步:关闭 IDE(如 VS Code、Android Studio),然后重新打开。 就这些了!!!
vsync 将再次出现。
除了 vsync 之外,LinearGradient 中的颜色 属性 也丢失了,在我应用所有这些步骤后,颜色 属性 和 vsync 重新出现。
我遇到了同样的问题,我升级了 SDK,然后使缓存无效并重新启动,它对我有用。
如果您仍然遇到与 vsync 相同的错误:这 你可能没有 with TickerProviderStateMixin 在你的状态定义
像这样更正您的状态定义
class _BookListState extends State<BookList> with TickerProviderStateMixin {
final BookHelper _bookHelper = BookHelper.instance;
}
我是如何在 Android Studio 中解决的?
首先,之前的答案可能是错误的,因为我没有更改我的 SDK 范围:
environment:
sdk: ">=2.1.0<3.0.0"
我在我的 dart 文件中编写了代码 (vsync),我知道 Android Studio 显示错误,但 不关心 ,只需编写您的代码:
AnimationController _animationController = AnimationController(
duration: Duration(seconds: 3),
vsync: this,
);
之后,关闭您的项目,然后再次打开它。系统可以自己理解。就这样 ! 你可以看我的截图证明:
在我的例子中,我在 android studio 中设置了 dart 和 flutter SDK 路径后解决了这个问题。
添加这个怎么样,
class _AnimationScreenState 扩展状态 ///
with SingleTickerProviderStateMixin {
/// }
这对我有用
将pubspec.yaml中的SDK版本更改为'>=2.8.0 <3.0.0'
然后 运行 以下命令:
- flutter升级
- flutter pub get
- 颤抖干净
并重启IDE
什么都不做just invalid the cache and restart your IDE
- 颤动干净
- 重启你的IDE
您必须将该行放在 initState() 方法中,如下所示:
@override
void initState() {
super.initState();
_controller = AnimationController(duration: expandDuration, vsync: this);
}