web-dev-qa-db-ja.com

Flutter拡張メソッドが機能しない、「未定義のクラス」と表示され、「拡張メソッド言語機能が必要」

dlblack.dev でゆっくりと個人用Webサイトを構築しています。少しだけスパイスを効かせようとしています。たとえば、コンピューター(マウスやポインターがないため、タブレットや携帯電話ではありません)から、クリック可能なアイテムの上にカーソルを置いても、マウスポインターがクリック可能であることを示すように変更されず、クリック可能なオブジェクトも変わりません。まったく変わりません。私は このFilledStacksチュートリアル に従うことにしましたが、この問題の修正については何も触れられていません。

基本的に何が起こっているかは、チュートリアルビデオ(彼がスケルトン拡張クラスを記述している)を約2.5分取得し、それを複製しようとすると、VSコードは名前を除いてクラス宣言のほぼ全体をレッドライン化します。私が書いているのは、彼が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に変更することでした。オンラインで多くの人が拡張機能がDart 2.7でリリースされたと言っているので、それを2.7.0に変更しました。私はこの件について多くのグーグルを行いましたが、誰も私と同じ問題を抱えているようには見えません。analysis_options.yamlファイルがありません。私はそれを作成し、onlyこれをコンテンツに入れました:

include:

analyzer:
  enable-experiment:
    - extension-methods

linter:

理論的には、実行すると問題が解決するはずですflutter pub getルートフォルダのコマンドラインから。そうではありません。何が悪いのか分かりません。助言がありますか?

ありがとう。

4
VitaminTussle

(Windowsの)Dartの「拡張機能」にも同様の問題がありました。「未定義のクラス」と、「実験的な」Dart設定を使用する必要があるというメッセージが表示されました。 2つのDartインストールがあり、1つは「c:\ Program Files」に、もう1つは「c:\ tools\Dart-sdk」にあります。 「Program Files」の下のバージョンを削除しました。 「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の場所を入力する必要があると言われました。

0
Andy King