如何在条件语句颤动中定义TextStyle

时间:2020-11-11 13:16:27

标签: flutter

可能是一个非常明显的问题,但是我需要在条件语句中添加TextStyle,但似乎并没有应用它。这是我尝试过的:

schema::id.eq(id).and(schema::email.eq(email))

它没有应用textStyle。谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用ternary operator

Text(
    'dummy text',
    style: contract.active == true ? TextStyle(color: Colors.red): TextStyle(color:Colors.blue), 
)

我仅为TextStyle添加了此代码,如果需要,您可以为Text进行添加。 还有一件事,contract.active已经是bool,您不需要检查其是否相等,可以使用contract.active代替contract.active == true

您可以这样更改文本:

Text(
    contract.active ? 'active' :'inactive'
    style: contract.active ? TextStyle(fontSize: 18) : TextStyle()
)

答案 1 :(得分:0)

您正在使用即时匿名功能。文本小部件的第一个参数需要一个字符串,您的匿名函数将返回该字符串。您在函数体内创建的TextStyle对象没有任何作用。

您需要将实现更改为(使用立即匿名功能):

Text(
    (() {
       if (contract.active) {
          return "Active";
       }
       return "Inactive";
    }()),
    style: (() {
       if (contract.active) {
          return TextStyle(fontSize: 18);
       }
       return null;
    }())
),

但是上面的代码看起来很奇怪,您只需使用三元运算符就可以实现:

Text(contract.active ? "Active" : "Inactive",
     style: active ? TextStyle(fontSize: 18) : null),