首页 > 解决方案 > getter 中的 switch 语句

问题描述

如何switch在 Dart 的 getter 中定义语句?

// Doesn't work... ❌
get String buttonText => {
  switch (step) {
    case 1: return "Register >";
    case 2: return "Confirmation >";
  }
  throw "Invalid step";
}

它失败了,看起来像语法错误:

预计会找到 '}'.dart(expected_token)

我觉得这很奇怪,因为它以函数形式工作得很好:

// Works fine... ✅
String buttonText() {
  switch (step) {
    case 1: return "Register >";
    case 2: return "Confirmation >";
  }
  throw "Invalid step";
}

标签: flutterdart

解决方案


删除胖箭头=>,它应该可以正常工作。

String get buttonText {
  ....

在飞镖中,你只能有一个或另一个:要么有大括号,要么有粗箭头。在大括号的情况下,您必须有一个 return 语句。在粗箭头的情况下,它后面的任何表达式都将是返回值。

// either
String get one => "1";

// or
String get one {
  return "1";
}

编辑:(基于cameron1024评论

该规则的唯一例外是如果您要返回映射文字,例如:someFunction() => {}这是一个返回空集的函数。


推荐阅读