Flutter 在 运行(或升级,或其他任何情况)上失败。

Flutter Fails on Run (or upgrade, or anything else).

我最近在 运行 我在 Intellij 中的任何 flutter 应用程序,Visual Studio 等中遇到了一个巨大的错误。我也因此无法执行 git 功能。任何帮助将不胜感激。

(Some parts omitted - this snippet represents the 40k line code pattern)

Launching lib/main.dart on iPhone X in debug mode...
compiler message: 

 file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/widgets/editable_text.dart:439:9: Error: Type 'LayerLink' not found.
compiler message:   final LayerLink _layerLink = new LayerLink();
compiler message:         ^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:4474:20: Error: The method 'getLastTransform' isn't defined for the class 'invalid-type'.
compiler message: Try correcting the name to the name of an existing method, or defining a method named 'getLastTransform'.
compiler message:     return _layer?.getLastTransform() ?? new Matrix4.identity();
compiler message:                    ^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/proxy_box.dart:4501:18: Error: Method not found: 'FollowerLayer'.
compiler message:     _layer = new FollowerLayer(
compiler message:                  ^^^^^^^^^^^^^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/texture.dart:76:7: Error: No named parameter with the name 'rect'.
compiler message:       rect: new Rect.fromLTWH(offset.dx, offset.dy, size.width, size.height),
compiler message:       ^^^^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:124:11: Error: 'ContainerLayer' isn't a type.
compiler message:     final ContainerLayer rootLayer = TransformLayer(transform: _rootTransform);
compiler message:           ^^^^^^^^^^^^^^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:124:38: Error: Method not found: 'TransformLayer'.
compiler message:     final ContainerLayer rootLayer = TransformLayer(transform: _rootTransform);
compiler message:                                      ^^^^^^^^^^^^^^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:124:38: Error: The method 'TransformLayer' isn't defined for the class '#lib1::RenderView'.
compiler message: Try correcting the name to the name of an existing method, or defining a method named 'TransformLayer'.
compiler message:     final ContainerLayer rootLayer = TransformLayer(transform: _rootTransform);
compiler message:                                      ^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:125:15: Error: The method 'attach' isn't defined for the class 'invalid-type'.
compiler message: Try correcting the name to the name of an existing method, or defining a method named 'attach'.
compiler message:     rootLayer.attach(this);
compiler message:               ^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:195:13: Error: The method 'addToScene' isn't defined for the class 'invalid-type'.
compiler message: Try correcting the name to the name of an existing method, or defining a method named 'addToScene'.
compiler message:       layer.addToScene(builder, Offset.zero);
compiler message:             ^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:215:58: Error: The method 'find' isn't defined for the class 'invalid-type'.
compiler message: Try correcting the name to the name of an existing method, or defining a method named 'find'.
compiler message:     final SystemUiOverlayStyle upperOverlayStyle = layer.find<SystemUiOverlayStyle>(top);
compiler message:                                                          ^
compiler message: file:///Users/JohnnySmithh/Documents/flutter/packages/flutter/lib/src/rendering/view.dart:220:35: Error: The method 'find' isn't defined for the class 'invalid-type'.
compiler message: Try correcting the name to the name of an existing method, or defining a method named 'find'.
compiler message:         lowerOverlayStyle = layer.find<SystemUiOverlayStyle>(bottom);
compiler message:                                   ^
Compiler failed on /Users/JohnnySmithh/IdeaProjects/MyCoolProject/lib/main.dart
Error launching application on iPhone X.
Exited (sigterm)

老实说,仅凭那条错误消息很难判断发生了什么。在构建之前,intellij 中是否出现任何错误?

我能想到的只有:

  • 您的 flutter 安装可能已损坏。您可以尝试删除并重新安装
  • 您的构建目录可能有问题。在再次构建之前尝试 运行 flutter clean
  • 您的库未正确包含。我假设这会出现在 intellij 中,但也许那里的路径设置不同?检查项目结构 -> 库并查看在那里设置路径的位置。
  • (与第一个相关)您的计算机上可能有多个 flutter 实例。如果 intellij 使用一个而命令行使用另一个可能会导致问题。

如果您的应用恰好是开源的,或者您能够通过最少的更改制作一个新应用来重现错误,那将对诊断问题有很大帮助 =)。