Flutter 扩展方法不起作用,它说 "undefined class" 和 "requires the extension-methods language feature"

Flutter extension-methods not working, it says "undefined class" and "requires the extension-methods language feature"

我正在 dlblack.dev, and I'm trying to spice it up a little bit. For example, from a computer (rather than a tablet or phone since they don't have mouse pointers), if you hover over any of the clickable items, it doesn't change your mouse pointer to indicate it's clickable, and the clickable object doesn't change at all. I've decided to follow this FilledStacks tutorial 慢慢建立我的个人网站,但它没有提到任何关于解决这个问题的事情。

基本上发生的事情是当我用大约 2.5 分钟的时间看完教程视频(他在其中编写了骨架扩展 class)并尝试复制它时,VS Code 红线几乎整个 class 声明除了名字。我正在写的内容与他在 2:26 屏幕上显示的内容完全相同,这是我的代码:

import 'package:flutter/material.dart';
import 'dart:html' as html;

extension HoverExtension on Widget{
  
}

“扩展”、“打开”和“小部件”在我执行此操作时都被红线标出。当我将鼠标悬停在“扩展”上时,它会显示以下内容:

Undefined class 'extension'.
Try changing the name to the name of an existing class, or creating a class with the name 'extension'. dartundefined_class
This requires the 'extension-methods' language feature to be enabled.
Try updating your pubspec.yaml to set the minimum SDK constraint to 2.6 or higher, and running 'pub get'. dart(experiment_not_enabled)

我做的第一件事是在我的 pubspec.yaml 文件中将我的最低 SDK 约束更改为 2.6.0。然后我把它改成 2.7.0 因为网上很多人说扩展是在 Dart 2.7 中发布的。我在这个问题上做了很多谷歌搜索,但似乎没有人遇到与我相同的问题:我没有 analysis_options.yaml 文件。我创建了一个,并将 only 放入其内容中:

include:

analyzer:
  enable-experiment:
    - extension-methods

linter:

理论上,我相信一旦我从我的根文件夹中的命令行 运行 flutter pub get 应该可以解决我的问题;它没有。我不知道出了什么问题。有什么建议吗?

要使 pubspec.yaml 和 analysis_options.yaml 中的更改生效,您必须重新启动 Dart Analysis Server。在 VSCode 中,这就像 Ctrl+Shift+P -> Reload Window.

一样简单

我在 Dart 中的“扩展”功能中遇到了类似的问题(在 Windows 上)...我得到的是“未定义 class”,消息说我需要使用“实验性”Dart 设置。似乎我有两个 Dart 安装,一个在“c:\Program Files”中,一个在“c:\tools\dart-sdk”中。我删除了“程序文件”下的版本。我还 运行“choco uninstall dart-sdk”和“choco install dart-sdk”,并确保安装后版本正确(使用“dart --version”)。命令“where dart”应该在 choco 安装后显示“c:\tools\dart-sdk-bin-dart.exe”。当我回到我的 Flutter 项目(使用 Android Studio)时,它说我的项目没有 Dart 支持,我只需要输入 Dart SDK 位置。

我必须做 flutter clean,然后关闭并重新打开 VSCode。

在Android Studio中解决这个问题需要三个步骤:

  1. 更新 pubspec.yaml 中的 SDK 版本(必须为 2.6.0 或更高版本)

     environment:
       sdk: ">=2.7.0 <3.0.0"
    
  2. 工具 -> Flutter -> Flutter 清理

  3. 关闭项目并重新打开(例如文件 -> 关闭项目)

如果 tombroz 的 解决方案行不通,那么

1.Tools -> Flutter -> Flutter Clean
2.Tools -> Flutter ->Pub get
3.File -> Invalidate cache/Restart -> Invalidate cache and Restart

我只需要 运行 flutter clean 等等。