Flutter 颤振:如何创建一个常量/最终数组,以便使用switch语句中的值?
我有这个:Flutter 颤振:如何创建一个常量/最终数组,以便使用switch语句中的值?,flutter,dart,Flutter,Dart,我有这个: final categories = ["First", "Second"]; 然后我想这样使用它: modify(String category) { switch (category): case categories[0]: ... break; case categories[1]: ... break; default: ... break } 但是大小写表达式必须是常量。 如何初始化常量数组?在Dar
final categories = ["First", "Second"];
然后我想这样使用它:
modify(String category) {
switch (category):
case categories[0]: ... break;
case categories[1]: ... break;
default: ... break
}
但是大小写表达式必须是常量。
如何初始化常量数组?在Dart中可能吗?常见修复: 使表达式成为常量表达式,或将switch语句重写为if语句序列:
修改(字符串类别){
如果(类别==类别[0]){
// ...
}
}
<>代码>类别< /Cord>这里是
categories.get(index)
的缩写。该函数基本上是常量,因此不可能在开关情况下使用,就像在java数组中一样。您应该使用enum
enum Category {
category1,
category2,
category3
}
void modify(Category category) {
switch (category) {
case Category.category1:
break;
case Category.category2:
break;
case Category.category3:
break;
}
}
是的,很好的复制粘贴。如何使表达式成为常量表达式?将final替换为
const
keyword@p2kr正如我在对问题的评论中提到的,这不会有任何帮助。stacktrace2234所寻找的是不可能的,因为类别[0]类似于调用categories.getAt(0)这样的函数。而且,该函数在运行时评估时基本上不是常量。这是大多数开关柜的局限性languages@GrahamD这不会有帮助,因为@stacktrace2234正如上面引用的问题中所解释的,不能将List
元素用作常量。您需要使用if
语句。根据您的案例主体正在做什么,也许您可以使用Map
,尽管这可能不值得麻烦。