我正在尝试编译一个简单的例子:
import 'package:flutter/material.dart';
void main() {
debugPrint(printShape(Circle()));
}
sealed class Shape {
}
class Square implements Shape {
}
class Circle implements Shape {
}
String printShape(Shape shape) => switch (shape) {
Square() => 'square',
Circle() => 'circle'
};
使用选项
--enable-experiment=sealed-class,variance,value-class,extension-types,macros,inference-update-2,records,inline-class,class-modifiers
,但是,我收到错误:
ERROR: lib/main.dart:15:35: Error: Expected an identifier, but got 'switch'.
main.dart:15
ERROR: Try inserting an identifier before 'switch'.
ERROR: String printShape(Shape shape) => switch (shape) {
ERROR: ^^^^^^
ERROR: lib/main.dart:15:35: Error: 'switch' can't be used as an identifier because it's a keyword.
...
我在通道 master 上使用 Flutter 版本 3.8.0-14.0.pre.2 / Dart 版本 3.0.0(构建 3.0.0-257.0.dev)
我做错了什么?或者 Dart 3 alpha 中还没有实现这个功能?
回答这个问题有点晚了,但为那些仍然面临这个问题的人添加它,因为我也访问了此部分以查看解决方案。
由于这是在 Dart 3 中引入的,因此您还应该更新 pubspec.yaml 中的环境 sdk 版本。
environment:
sdk: ">=3.0.0"