找不到Dart扩展功能

问题描述 投票:6回答:1

我有一个关于flutter的项目,我非常想在其中使用扩展方法。我已经升级了pubspec.yaml文件以使用sdk: ">=2.6.0 <3.0.0"。我创建一个包含内容的文件list_extensions.dart

import 'dart:math';

extension ListExtension<T> on List<T> {

  T randomElement() => this.elementAt(Random().nextInt(this.length));

}

当我尝试在其他类似文件中使用此扩展名方法时

String getRandomText(List<String> texts) => texts.randomElement();

我看到带有文本的编译器错误:The method 'randomElement' isn't defined for the class 'List'

但是当我尝试在list_extensions.dart文件中使用此扩展方法时-编译器就可以了。

事实是,我的另一个项目可以找到我声明的所有扩展方法。

flutter doctor说:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.10.17-pre.74, on Mac OS X 10.15 19A603, locale en-RU)
[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ✗ Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit https://flutter.dev/setup/#android-setup for detailed instructions.
[✓] Xcode - develop for iOS and macOS (Xcode 10.2)
[✓] Android Studio (version 3.5)
[✓] Android Studio (version 3.4)
[✓] VS Code (version 1.39.2)
[✓] Connected device (1 available)

flutter --version说:

Flutter 1.10.17-pre.74 • channel master • https://github.com/flutter/flutter.git
Framework • revision bcc93bca23 (6 days ago) • 2019-11-13 11:31:20 -0800
Engine • revision 31cd2dfca2
Tools • Dart 2.7.0

如何强制编译器查看扩展方法?

flutter dart extension-methods
1个回答
0
投票
extension方法正在运行的版本:

Android Studio 3.6.2

    Flutter插件192.7761
  • Dart插件45.1.1
  • 还有另一个重要点是,必须命名extension。如果未命名,则不能在其他文件中使用:
  • 私人extension

    extension on Banana { // ... }

    公开extension

    extension BananaExtension on Banana {
      // ...
    }
    

    我在Dart extension公告on YouTube的评论中找到了它>

  • © www.soinside.com 2019 - 2024. All rights reserved.