flutter - 未找到 Dart 扩展功能

标签 flutter dart extension-methods

我有一个关于 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

我能做些什么来强制编译器查看我的扩展方法?

最佳答案

这不是你的情况,但对我来说,它在更新 Android Studio、Flutter 插件和 Dart 插件后工作。
也许它会帮助别人。
extension 的版本方法有效:

  • Android Studio 3.6.2
  • flutter 插件 192.7761
  • Dart 插件 45.1.1

  • 另一个重要的一点是 extension必须命名。如果未命名,则不能在其他文件中使用:

    私有(private) extension :

    extension on Banana {
      // ...
    }
    

    公众号 extension :

    extension BananaExtension on Banana {
      // ...
    }
    

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

    关于flutter - 未找到 Dart 扩展功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58942985/

    相关文章:

    firebase - 向Cloud Firestore添加阵列(Flutter/Dart)

    firebase - 如何将 Flutter Web 应用程序部署到 Firebase 上托管的现有网站?

    dart - 如何在 Flutter 中更改键盘上的文本输入操作按钮(返回/回车键)?

    c# - 使用 CodeDOM 创建扩展方法

    c#-3.0 - 什么时候使用扩展方法是一个好习惯?

    dart - 为什么子窗口小部件StreamBuilders没有收到错误?

    flutter - Flutter中的“自动关闭”对话框

    sqlite - 构建库 dart_sqlite 时找不到 dart_api.h

    dart - 使用 material-dropdown-select 时 DomPopupSourceFactory 提供程序错误

    c# - 什么时候图书馆应该被称为 "Linq-something"或 "something-Linq"?