flutter - 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";
}
解决方案
删除胖箭头=>
,它应该可以正常工作。
String get buttonText {
....
在飞镖中,你只能有一个或另一个:要么有大括号,要么有粗箭头。在大括号的情况下,您必须有一个 return 语句。在粗箭头的情况下,它后面的任何表达式都将是返回值。
// either
String get one => "1";
// or
String get one {
return "1";
}
编辑:(基于cameron1024的评论)
该规则的唯一例外是如果您要返回映射文字,例如:someFunction() => {}
这是一个返回空集的函数。
推荐阅读
- python - 用 BeautifulSoup 刮掉同一个班级
- javascript - 根据过滤器更改按钮文本
- css - Litelement 组件样式 - :具有属性或类的主机
- apache-spark - Loading Parquet Files with Different Column Ordering
- javascript - How can I exclude multiple files from splitchunk webpack?
- ubuntu - ubuntu - GNU-RADIO - cmake 找不到 MPIR
- javafx - How do I change a property of all DatePickers in my project? (javaFX)
- amazon-cognito - How to get rest API of AWS Cognito
- json - How can I query JSON of an XML parsing in a client only app?
- machine-learning - How to fix runtime error "RuntimeError: value cannot be converted to type float without overflow: (6.6133e-07,-2.14879e-07)"