我有一个关于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();
我看到一个编译器错误,错误信息为:
方法“randomElement”在“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
我该怎么做才能强制编译器看到我的扩展方法?