Animation Android上的颤振动画:D/skia(22985):无法反转viewmatrix 复制步骤
在不深入代码的情况下,我会在每次时间更改时触发一个动画,其中:Animation Android上的颤振动画:D/skia(22985):无法反转viewmatrix 复制步骤,animation,dart,flutter,Animation,Dart,Flutter,在不深入代码的情况下,我会在每次时间更改时触发一个动画,其中: @override Widget build(BuildContext context) { if (this._currentTime != widget.amountOfTime) { this._changeTimeAnimation(); } return new AnimatedBuilder( animation: this._animation, buil
@override
Widget build(BuildContext context) {
if (this._currentTime != widget.amountOfTime) {
this._changeTimeAnimation();
}
return new AnimatedBuilder(
animation: this._animation,
builder: (BuildContext context, Widget child) => this._flipAnimation(child),
child: new Text(
this._currentTime,
textAlign: TextAlign.left,
style: new TextStyle(fontSize: 100.0),
),
);
}
以下是。_flipAnimation()的内容:
Transform _flipAnimation(Widget child) {
/// Function used to generate a flip animation for the time
final Matrix4 transform = new Matrix4.identity()
..scale(1.0, this._animation.value, 1.0);
return Transform(
transform: transform,
alignment: FractionalOffset.center,
child: child,
);
}
每次触发动画时,我都会收到消息D/skia(22985):无法反转viewmatrix
。为什么呢
我会注意到,动画似乎在设备上工作得很好,但打印输出很奇怪
日志
在颤振运行后
:
Performing full restart...
Restarted app in 2,182ms.
D/skia (22985): Could not invert viewmatrix
D/skia (22985): Could not invert viewmatrix
D/skia (22985): Could not invert viewmatrix
D/skia (22985): Could not invert viewmatrix
D/skia (22985): Could not invert viewmatrix
颤振医生
运行颤振医生-v
后:
[✓] Flutter (Channel beta, v0.2.8, on Mac OS X 10.13.4 17E199, locale en-US)
• Flutter version 0.2.8 at /Users/jvanderen11/flutter
• Framework revision b397406561 (13 days ago), 2018-04-02 13:53:20 -0700
• Engine revision c903c217a1
• Dart version 2.0.0-dev.43.0.flutter-52afcba357
[✓] Android toolchain - develop for Android devices (Android SDK
27.0.3)
• Android SDK at /Users/jvanderen11/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-27, build-tools 27.0.3
• Java binary at: /Applications/Developer Tools/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.3, Build version 9E145
• ios-deploy 1.9.2
• CocoaPods version 1.5.0
[✓] Android Studio (version 3.1)
• Android Studio at /Applications/Developer Tools/Android Studio.app/Contents
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
[✓] IntelliJ IDEA Ultimate Edition (version 2018.1.1)
• IntelliJ at /Users/jvanderen11/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
• Flutter plugin version 23.1.3
• Dart plugin version 181.4203.498
[✓] Connected devices (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 7.1.1 (API 25) (emulator)
• No issues found!
错误的原因是,当缩放为(1.0,0.0,1.0)时,它会导致矩阵Skia不喜欢(可能无效-请参阅,我认为是) 一个简单的解决方法是确保你永远不会真正通过scale(1.0,0.0,1.0),无论是通过修改你的代码,还是每次向数字中添加一个非常小的量,即
.scale(1.0,这个。_animation.value+smallval,1.0)
显然.scale(1.0,this.\u animation.value+1e-100,1.0)这样可以避免乘以零而不影响它。伟大的建议!安卓仍然在<代码> 1E-100中抛出错误,但它确实像<代码> 0亿日元、1亿日元、0.00亿日元、十亿美元/十亿欧元> <代码>好的哈哈,可能是从飞镖双到C++浮法/双倍的转换。(不管他们在底层的Skia库中使用什么)。很高兴我能为他们服务,我将把它添加为一个答案,因为我们实际上不应该在注释中回答=)