Flutter - 如何根据 int 的大小更改标记的颜色?

问题描述 投票:0回答:1

我想在每个 GPS 点处创建标记,其颜色范围从白色到红色,对应于 GPS 数据指示该点速度的慢或快程度。然而,由于

Color.fromRGBO()
requires
const
参数,我很难获得改变颜色的速度。我怎样才能绕过 Color 类或找到比使用 Marker 对象更好的方法来绘制这样的渐变?

flutter flutter-layout
1个回答
1
投票

您确实可以使用https://api.flutter.dev/flutter/dart-ui/Color/Color.fromARGB.html

const Color.fromARGB(
    int a,
    int r,
    int g,
    int b
) 

a=0
g=0
b=0
并使用您的刻度(您需要知道最大值,我们称之为
r_max
,以标准化范围)。因此,每当您有强度值时,我们称其为
r_intensity
,您只需计算

const r = 255 * (r_intensity / r_max)

计算颜色强度。

r_intensity / r_max
的结果将始终在 [0, 1] 乘以 255 的范围内,以符合

r 是红色,从 0 到 255。 来自文档。

关于常量问题:听起来您想要(大量?)为颜色设置动画。查看 https://api.flutter.dev/flutter/animation/AnimationController-class.html 并将红色值设置为您的 Widget 状态。

除此之外,它应该可以工作

  1. 返回新红色值的方法(并执行上述计算)
  2. 只需使用
    var r = ...
    代替
    const r = ...
    并将其传递给 Color

查看您的图像,问题可能源于您的 int 为空。请确保您的颜色小部件没有包装到任何带有

const
前缀的小部件中!这里可能就是这种情况,并产生您所看到的结果。在我这边测试了一下以确认。

© www.soinside.com 2019 - 2024. All rights reserved.