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



我正在慢慢地建立我的个人网站,dlblack.dev,我试图给它增添一点趣味。例如,在计算机(而不是平板电脑或手机,因为它们没有鼠标指针(上,如果将鼠标悬停在任何可单击项目上,它不会更改鼠标指针以指示它是可单击的,并且可单击对象根本不会更改。我决定遵循这个 FilledStacks 教程,但它没有提到任何关于解决这个问题的信息。

本质上,当我通过教程视频(他编写骨架扩展类(获得~2.5分钟并尝试复制它时,VS Code几乎对整个类声明进行了红线,除了名称。我正在写的内容与他在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 文件。我创建了一个,并将其放在其内容中:

include:
analyzer:
enable-experiment:
- extension-methods
linter:

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

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

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

    environment:
    sdk: ">=2.7.0 <3.0.0"
    
  2. 工具 ->
  3. 颤振 -> 颤振清洁

  4. 关闭项目并重新打开它(例如。文件 -> 关闭项目(

要更改 pubspec.yaml 和 analysis_options.yaml,您必须重新启动 Dart Analysis Server。在 VSCode 中,这就像 Ctrl+Shift+P -> 重新加载窗口一样简单。

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

我对 Dart(在 Windows 上(中的"扩展"功能也有类似的问题......我得到了"未定义的类",并且消息说我需要使用"实验性"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 位置。

如果tombroz的解决方案不起作用,那么

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

我只需要运行flutter clean,瞧。

相关内容

最新更新