【问题标题】:Flutter extension-methods not working, it says "undefined class" and "requires the extension-methods language feature"Flutter 扩展方法不起作用,它说“未定义的类”和“需要扩展方法语言功能”
【发布时间】:2020-08-29 22:53:53
【问题描述】:

我正在慢慢地在dlblack.dev 上建立我的个人网站,并且我正在尝试为它增添一点趣味。例如,从计算机(而不是平板电脑或手机,因为它们没有鼠标指针),如果您将鼠标悬停在任何可点击项目上,它不会改变您的鼠标指针以指示它是可点击的,并且可点击对象根本没有改变。我决定关注this FilledStacks tutorial,但它并没有提到解决这个问题的任何内容。

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

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

extension HoverExtension on Widget{
  
}

当我这样做时,“extension”、“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 文件中究竟有什么内容?
  • @jamesdlin 名称:DLBlackDev 描述:我的个人网站完全使用 Flutter/Dart 构建。版本:1.0.0+1 环境:sdk:">=2.6.0

标签: flutter dart extension-methods flutter-web class-extensions


【解决方案1】:

我只需要运行 flutter clean 等等。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      要使 pubspec.yaml 和 analysis_options.yaml 中的更改生效,您必须重新启动 Dart 分析服务器。在 VSCode 中,这就像 Ctrl+Shift+P -> 重新加载窗口一样简单。

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

        • 非常感谢。这解决了我在 VSCode 中的问题。
        • 我做了所有事情,但关闭了项目 :D 谢谢,它现在可以工作了
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2021-10-09
            • 2016-05-13
            • 1970-01-01
            • 1970-01-01
            • 2019-01-21
            • 1970-01-01
            • 1970-01-01
            • 2020-12-29
            • 1970-01-01
            相关资源
            最近更新 更多