【发布时间】:2020-11-18 02:00:57
【问题描述】:
我在pubspec.yaml 文件中激活了 Dart 不可为空的语法实验:
name: tests
description: A new Flutter application.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.9.0-21.0.dev.flutter <3.0.0"
analyzer:
enable-experiment:
- non-nullable
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.3
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
所以,现在在运行 flutter pub get 之后,我正在尝试使用不可为空的语法创建一个类:
class Component_Decorator_A extends Component_Decorator {
Component_Decorator_A([Component? component]) : super(component);
@override
operation() {
component?.operation();
print('Component_Decorator_A.Operation()');
}
}
令人惊讶的是,Android Studio 中的语法分析器说:
This requires non-nullable language feature to be enabled. Try updating your pubspec.yaml to set the minimum SDK constraint to 2.9.9 or higher, and running pub get.
好的,我无法按照建议将最低 SDK 版本设置为 2.9.0,只要我每次尝试在我的 pubspec.yaml 中设置 environment: sdk: ">=2.9.0 <3.0.0",随后的 flutter pub get导致下一个版本解决我无法解决的错误:
flutter pub get
Running "flutter pub get" in master000...
The current Dart SDK version is 2.9.0-21.0.dev.flutter-2e05e6c94a.
Because patterns_experiments_and_tests requires SDK version >=2.9.0 <3.0.0, version solving failed.
---- Log transcript ----
FINE: Pub 2.9.0-21.0.dev.flutter-2e05e6c94a
MSG : Resolving dependencies...
SLVR: fact: patterns_experiments_and_tests is 1.0.0+1
SLVR: derived: patterns_experiments_and_tests
SLVR: fact: patterns_experiments_and_tests requires SDK version >=2.9.0 <3.0.0
SLVR: conflict: patterns_experiments_and_tests requires SDK version >=2.9.0 <3.0.0
SLVR: Version solving took 0:00:00.060030 seconds.
| Tried 1 solutions.
FINE: Resolving dependencies finished (0.1s).
ERR : The current Dart SDK version is 2.9.0-21.0.dev.flutter-2e05e6c94a.
|
| Because patterns_experiments_and_tests requires SDK version >=2.9.0 <3.0.0, version solving failed.
FINE: Exception type: SolveFailure
FINE: package:pub/src/solver/version_solver.dart 312:5 VersionSolver._resolveConflict
| package:pub/src/solver/version_solver.dart 133:27 VersionSolver._propagate
| package:pub/src/solver/version_solver.dart 97:11 VersionSolver.solve.<fn>
| ===== asynchronous gap ===========================
| dart:async Future.catchError
| package:pub/src/utils.dart 113:52 captureErrors.wrappedCallback
| package:stack_trace Chain.capture
| package:pub/src/utils.dart 126:11 captureErrors
| package:pub/src/command_runner.dart 193:13 PubCommandRunner.runCommand
---- End log transcript ----
pub get failed (1; ---- End log transcript ----)
Process finished with exit code 1
这里应该注意flutter doctor -v 报告项目中的一切都非常“OK”:
[✓] Flutter (Channel master, 1.21.0-5.0.pre, on Mac OS X 10.15.5 19F101, locale ru-RU)
• Flutter version 1.21.0-5.0.pre at /Applications/flutter
• Framework revision 2a063fc6c0 (11 дней назад), 2020-07-17 12:51:01 -0400
• Engine revision 1493883bf0
• Dart version 2.9.0 (build 2.9.0-21.0.dev 2e05e6c94a)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
• Android SDK at /Users/sergeglushenko/Library/Android/sdk
• Platform android-30, build-tools 30.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.5, Build version 11E608c
• CocoaPods version 1.8.4
[✓] Android Studio (version 4.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 47.1.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
[✓] Connected device (1 available)
• macOS (desktop) • macos • darwin-x64 • Mac OS X 10.15.5 19F101
您能否建议我如何使 Dart 不可为空的语法在 Android Studio(最新版本)中稳定可用?
【问题讨论】:
标签: android-studio flutter dart non-nullable