dart 3 alpha:带有模式匹配的开关无法编译

问题描述 投票:0回答:1

我正在尝试编译一个简单的例子:

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 中还没有实现这个功能?

flutter dart switch-statement
1个回答
0
投票

回答这个问题有点晚了,但为那些仍然面临这个问题的人添加它,因为我也访问了此部分以查看解决方案。

由于这是在 Dart 3 中引入的,因此您还应该更新 pubspec.yaml 中的环境 sdk 版本。

environment:
  sdk: ">=3.0.0"
© www.soinside.com 2019 - 2024. All rights reserved.