flutter - Flutter:如何在 CustomPainter 对象中设置动态颜色
问题描述
为 CustomPainter 的构造函数动态设置油漆颜色不起作用。
lines_painter.dart
class LinesPainter extends CustomPainter {
final double lineHeight = 8;
final int maxLines = 60;
final Color customColor;
LinesPainter(this.customColor);
@override
void paint(Canvas canvas, Size size) {
canvas.translate(size.width / 2, size.height / 2);
canvas.save();
final Paint linePainter = Paint()
..color = customColor
..style = PaintingStyle.stroke
..strokeWidth = 1.5;
final radius = size.width / 2;
List.generate(maxLines, (i) {
var newRadius = (i % 5 == 0) ? radius - 15 : radius - 5;
canvas.drawLine(Offset(0, radius), Offset(0, newRadius), linePainter);
canvas.rotate(2 * pi / maxLines);
});
canvas.restore();
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => true;
}
实用工具.dart
class Utils{
List<Color> getColorsArray (){
return [
Color(0xff5733),
Color(0xc70039),
Color(0x900c3e),
Color(0x571845),
Color(0x251e3e),
Color(0x051e3e),
];
}
}
下面的代码应该用线条绘制圆形
LinesPainter(Utils().getColorsArray()[0])
预期结果:
当前结果:
解决方案
正如@pskink 在评论中提到的那样,我已经阅读了文档,并且我知道我在十六进制代码中缺少 Alpha 值。
像下面这样在 utils.dart 文件中进行更改,它对我来说很好用。
class Utils{
List<Color> getColorsArray (){
return [
Color(0xffff5733),
Color(0xffc70039),
Color(0xff900c3e),
Color(0xff571845),
Color(0xff251e3e),
Color(0xff051e3e),
];
}
}
推荐阅读
- python - 如何使用python从文本文件中获取链接
- mongodb - 在MongoDB中删除多个文档的有效方法
- python - 使用来自现有数据框 python 的新主键创建新的假数据
- sql - 如何将进入者存储到事件中以便稍后在 Spring JPA 中访问它们
- node.js - Twilio 耳语不起作用 - 被呼叫者在接听电话后立即与呼叫者建立连接
- informatica-powercenter - 是否可以限制 informatica 中列的值
- point-cloud-library - 如何从粗糙点云制作直线网格
- python - 如何根据日期列条件返回数据框
- c++ - UB是否将第一个联合成员重新解释为活动联合成员的类型?
- parsing - 如何存储解析器创建的抽象语法树?