Flutter/Dart中基于List<String>实现If Else判断控制文本颜色
问题原因
- 颜色值透明度配置错误:Flutter的
Color类接收的是0xAARRGGBB格式的32位数值,前两位AA代表透明度,你设置的绿色为0x00FF00,透明度位是00代表完全透明,这是文本组件消失的核心原因。 - 函数传参错误:调用
_getMyColor时你传入了整个status列表,而非当前索引对应的单个状态字符串status[index],导致判断逻辑永远无法匹配Available的条件分支。 - Text组件语法错误:
style是Text的构造参数,需要放在Text的括号内部,你当前的写法把style放到了Text外部,属于语法错误。
修正方案
首先修正颜色判断函数:
List<String> status = ['Available','Not Available','Available','Available','Not Available']; // 补充参数类型、返回值类型,修正颜色透明度配置 Color _getMyColor(String currentStatus){ if(currentStatus == "Available"){ return const Color(0xFF00FF00); // 透明度设为FF(完全不透明)的绿色 } else { return const Color(0xFFFF0000); // 透明度设为FF的红色 } }
再修正ListView.builder内的调用代码:
// 将style放入Text构造参数内,传入当前索引对应的状态值 Text( status[index], style: TextStyle(color: _getMyColor(status[index])), )
内容的提问来源于stack exchange,提问作者Muhammad Rizky Nur Fajrie
相关产品推荐
相关产品推荐

