flutter - Flutter/Dart:如何从 Colorgradient 获得单色?
问题描述
我正在尝试构建一个小部件,随着时间的推移,它的背景颜色从绿色变为红色,但以流畅的方式。非常类似于渐变背景:
但不是固定的渐变,而是一开始的全绿色背景,随着时间的倒计时,背景应该慢慢过渡到黄色,然后是橙色,最后是红色。
我希望颜色每 10 毫秒更新一次,所以这不是突然的变化。我正在使用计时器处理更改,该计时器计算相对于开始时间已经过去了多少时间并相应地更新颜色。
现在 - 有什么办法可以从类似渐变的对象中获得具体的颜色?就像我可以在特定点(这是 time_passed/max_time 的一部分)提取渐变的颜色以将其用作完整背景?或者我应该实际使用颜色代码并每 10 毫秒增加一次颜色代码的值?这似乎不是很优雅
解决方案
好的,我实际上找到了两个解决方案:
1. 使用 Color.lerp(color a, color b, double p) 函数 它的作用是在 a 和 b 之间创建一个渐变,并返回该比例上 p 点(0 和 1 之间的值)上存在的颜色。这基本上是我想要的,但有一个问题:它不一定将这两种颜色与你想要介于两者之间的颜色进行插值,它更像是这两种颜色之间的棕色混合。
2. 安装 rainbow_color 包 这正是我所需要的,你可以插入多种自定义颜色,指定你使用的值范围(在我的例子中是 0.0 和 1.0,但它也可以是整数),它返回一个渐变只有这些颜色:
var rb = Rainbow(
spectrum: [
Color(0xff1fff00),
Color(0xffd0ff00),
Color(0xffffaa00),
Color(0xffffaa00),
Color(0xffff6600)
],
rangeStart: 1.0,
rangeEnd: 0.0
);
return rb[remainingFraction];
推荐阅读
- python - WLAN网络上的Python ZMQ示例
- amazon-ec2 - EC2 如何允许 SSH 调谐访问私有子网中的 RDS?
- python - 上下文无关语法树作为特征
- iis - IIS URL Rewrite 删除部分路径
- javascript - React Router 4 链接正在工作,但组件未呈现
- php - PHP接收文件并将其放入文件夹中
- ios - 无法使用 this.state.data.map() 在 react native firebase 中显示获取的数据
- javascript - 通过脚本访问 HTML 元素
- c# - 由于未授权客户端错误,无法获取令牌
- python - 为什么python将信号限制在主线程