我知道在最新版本的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及更高版本中有效

10-07 19:57
查看更多