Man*_*aul 4 android flutter flutter-layout
我通过对每个细节进行硬编码来做到这一点。但我想动态地实现这一点。
问题是 - 如果我编码一段时间,我将输入我编码的小时数,如果我实现了里程碑,里程碑文本必须变为红色,下一个里程碑必须变为绿色。
这是我到目前为止的代码
我的里程碑清单
List milestoneList = [10, 25, 50, 100, 250, 500, 750, 1000];
将列表映射到小部件
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: milestoneList.map((item) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
item.toString(),
style: TextStyle(
fontWeight: FontWeight.bold,),
),
);
}).toList(),
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够破解我需要将值传递给color的参数TextStyle。我无法思考超出这一点的事情。
编辑:如果你想要每个项目有不同的颜色,你可以使用这样的功能,
Color getColor(number) {
if (number > 0 && number < 100) return Colors.red;
if (number >= 100 && number < 200) return Colors.blue;
...
}
Run Code Online (Sandbox Code Playgroud)
并更新颜色属性,
color: getColor(item),
Run Code Online (Sandbox Code Playgroud)
将其添加到里程碑列表下方
Color textColor = Colors.black; // Default color
Run Code Online (Sandbox Code Playgroud)
像这样改变你的文字样式,
TextStyle(
fontWeight: FontWeight.bold,
color: textColor,
),
Run Code Online (Sandbox Code Playgroud)
这样做是为了更新颜色,
FlatButton(
onPressed: () {
setState(() => textColor =
Color((Random().nextDouble() * 0xFFFFFF).toInt() << 0)
.withOpacity(1.0)); // this is generate random color, u can use your own..
},
child: Text("change color"),
),
Run Code Online (Sandbox Code Playgroud)