我最初的目标是使用模式作为实验标志。
(int a, int b) minMax(List<int> list) {
int min = list[0];
int max = list[0];
for (final i in list) {
if (i < min) {
min = i;
}
if (i > max) {
max = i;
}
}
return (min, max);
}
但我得到了:This requires the 'records' language feature to be enabled
但是在analysis_options.yaml
中,我已经添加了:
analyzer:
enable-experiment:
- records
- patterns
- value-class
flutter clean
和flutter doctor
Flutter (Channel stable, 3.7.6, on macOS 12.5.1 21G83 darwin-arm64, locale en-US)
所以我找到了这个答案How to use Dart 3 Alpha in a Flutter project?
它说我应该切换到主频道。是的
flutter --version
Flutter 3.9.0-13.0.pre.11 • channel master • https://github.com/flutter/flutter.git
Framework • revision 2392be7656 (31 minutes ago) • 2023-03-21 16:22:01 -0400
Engine • revision 87ddd910f1
Tools • Dart 3.0.0 (build 3.0.0-348.0.dev) • DevTools 2.22.2
但仍然会出错。
所以我检查了他们的示例仓库,在相同的答案https://github.com/yeasin50/experimental_project/blob/test-on-3.7.0-29.0.pre.21/pubspec.yaml中
我注意到他们在pubspec.yaml中将Dart版本更改为3.0.0,这在答案中没有提到。
所以把dart版本改成了
environment:
sdk: '>=3.0.0-151.0.dev <4.0.0'
模式现在可以工作了,但是我的项目中到处都是新的错误。
The class 'StringUtil' can't be used as a mixin because it isn't a mixin class nor a mixin.
如何使用pattern并保持dart sdk <3.0.0?我认为实验性旗帜的目标就是这样做。如果您正在有效地使用dart 3.0.0,那么在分析选项yaml中添加实验标志的意义何在?默认情况下是启用的吗我通过移除标志进行了测试,它仍然可以在dart3.0.0上工作
1条答案
按热度按时间dz6r00yl1#
使StringUtil类作为mixin非抽象或接口