Flutter:未实现的丢失静态目标的处理

Dev*_*ath 9 flutter

  1. 我正在运行我的第一个Flutter项目
  2. 我创建了一个示例项目,并能够在模拟器中运行该应用程序

我已经编辑了文件 main.dart

主镖

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(home: Text('Hello World')));
Run Code Online (Sandbox Code Playgroud)

现在我得到了错误:

在此处输入图片说明

pubspec.yaml

name: flutter_app
description: A new Flutter application.

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter


# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  # assets:
  #  - images/a_dot_burr.jpeg
  #  - images/a_dot_ham.jpeg

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages
Run Code Online (Sandbox Code Playgroud)

小智 70

只需再次编译项目,它就会工作。发生该错误的原因是静态变量是在可执行文件上硬编译的,而不是动态的。如果您热重载更改,它不会重建可执行文件 (apk),因此您需要重建应用程序。


Jos*_*ven 48

你的代码对我有用...

您是否尝试过热重启?快捷方式是 CTRL+SHIFT+\ 或只需单击控制台窗口中带有绿色圆圈箭头的按钮

我不确定那个错误是什么,因为我无法复制它。然而,这更像是你的应用程序应该是什么样子。试一试,看看它是否有效。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Text('Hello World'),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)


Kal*_*nga 33

只需删除构建并重新编译即可。它对我有用。使用以下代码:

flutter clean
flutter run
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,这不是用 AK-47 打蚊子吗?看来重启还有很长的路要走 (2认同)

kar*_*nms 20

通常,在大量逻辑更改后需要重新启动完整的应用程序,例如将 StatelessWidget 转换为 StatefulWidget。 检查 André Glatzl 的答案

Android Studio 中使用 Flutter Hot Restart

Flutter 热重启


小智 8

热重启将起作用。但问题的根源可能如下。

您已经创建了新项目。您已删除样板代码并尝试在没有状态或无状态小部件的情况下进行修改。Flutter 尝试在 build() 方法下重建小部件。但是当您热重载时,flutter 可能无法解决您更新的内容。

这种错误的另一个例子是,当我们在一个类(如constants.dart)中创建一个新的静态变量(static String token = "abc";) 并尝试在另一个屏幕(constants.token)中引用它们时,flutter 失败了当我们热重载时解决这些静态的事情。但是当我们热重启时它工作正常。


Jan*_*uka 7

发生这种情况的原因之一是您是第一次运行该应用程序,然后进行了一些更改并再次重新加载。不重新加载,停止执行,再次从头运行应用程序,不会出现此错误。


小智 6

我也遇到了同样的情况,我通过再次运行应用程序修复了它,这个问题是当您对代码进行了大量更改并按下热重新加载按钮时引起的。 在此输入图像描述


小智 5

最初,对我来说发生了同样的错误...但是当我执行“热重启”时,它起作用了

  • 也为我工作过。对于像我这样不太熟悉的人来说:快捷方式是 CTRL+SHIFT+\ 或只需单击控制台窗口中带有绿色圆圈箭头的按钮 - 它将重新同步文件到设备。 (6认同)
  • 也为我工作过。这应该是公认的答案 (5认同)
  • 热重启有帮助 (4认同)
  • 它帮助了我。谢谢 (4认同)
  • flutter提示:出现错误时,假设没有,先重启 (4认同)
  • 只需停止正在运行的应用程序并重新开始 (4认同)

Nai*_*san 5

重新启动应用程序在我的情况下有效。