You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart的getter中定义switch语句并解决语法报错问题

报错原因
  • Dart的=> 箭头语法仅支持后跟单个返回值表达式,不能跟大括号包裹的语句块。你在箭头后直接写{会被Dart识别为Set/Map字面量的起始标记,而不是代码块的开始,内部的switch语句不符合集合字面量的语法规则,因此触发Expected to find '}'的语法错误。
  • 普通函数可以正常运行,是因为你没有使用箭头语法,函数名后的{会被正确解析为函数体的边界。
正确实现方案

方案1: getter使用标准代码块写法(兼容所有Dart版本)

直接去掉箭头语法,给getter加常规代码块即可,逻辑和你写的普通函数完全一致:

String get buttonText {
  switch (step) {
    case 1: return "Register >";
    case 2: return "Confirmation >";
  }
  throw "Invalid step";
}

方案2:使用箭头语法+Switch表达式(需Dart 3.0及以上版本)

如果你想保留箭头语法的简写形式,可以将语句式switch替换为Dart 3.0新增的表达式式switch,直接作为返回值放在箭头后:

String get buttonText => switch (step) {
  1 => "Register >",
  2 => "Confirmation >",
  _ => throw "Invalid step"
};

内容的提问来源于stack exchange,提问作者FloatingRock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:54:03