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

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

我正在慢慢建立我的个人网站 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{
  
}
当我这样做时,“扩展”、“开”和“小部件”都被红线了。当我将鼠标悬停在“扩展”上时,它会显示以下内容:
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 中解决这个问题需要三个步骤:

  • 在 pubspec.yaml 中更新 SDK 版本(必须是 2.6.0 或更高版本)
     environment:
       sdk: ">=2.7.0 <3.0.0"
    
  • 工具 -> Flutter -> Flutter Clean
  • 关闭项目并重新打开它(例如文件 -> 关闭项目)
  • 关于Flutter 扩展方法不起作用,它说 "undefined class"和 "requires the extension-methods language feature",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61779848/

    相关文章:

    dart - 空感知函数调用?

    flutter - 有没有办法在 "Flutter web"应用程序的代码中获取用于启动应用程序的 URL?

    swift - 具有可选值的自定义运算符

    ios - 在所有 viewDidLoad 函数中重复相同的语句可能的扩展文件

    flutter - 如何使文本字段输入保持垂直居中?

    flutter - 如何在 Flutter Web 应用程序中保存和下载文本文件

    flutter - 如何在flutter中设置数据表的样式?

    Flutter Bloc,什么是 "..add"

    dart - 在 Dart 中迭代复杂的集合

    c# - 生成 SelectListItem 列表的 IQueryable 扩展方法