我知道在最新版本的dart中,我们可以在build方法内使用if
else
语句。有人知道我们在设置类参数时是否也可以使用if
else
语句吗?我知道我可以在那里做内联语句,但是当有多个条件时,内联有点难以阅读
const int i = 0;
class Person {
// NewClass n = NewClass(a: i == 0 ? 'a' : 'b'); //<- inline statement working
NewClass n = NewClass(a: if(i == 0) 'a' else 'b'); //<- if statement doesn't
}
class NewClass {
final String a;
const NewClass({this.a});
}
编辑:
基本上在我的情况下,我有一个TextField小部件,可从枚举中设置它的类型参数(Type.text,Type.numeric ...)。根据此参数,我想设置TextField参数(textCapitalization,maxLength等)
最佳答案
根据您的评论,您已经在创建一个用于指定字段类型的枚举。
enum Type {text, numeric}
现在要指定该特定类型的属性,您可以在该枚举上添加扩展名,如下所示:
extension TextFieldProperties on Type {
int get maxLength {
if (this == Type.text) {
return 10;
}
return 12;
}
}
因此,在您的字段类中,您已经定义了一个类型,您可以使用该类型变量来获取该特定类型字段的属性。
Type type = Type.text;
print(type.maxLength); // Will print 10
type = Type.numeric;
print(type.maxLength); // Will print 12
注意:仅在Dart 2.7及更高版本中有效