我如何在 flutter 中使用颜色数组中的随机颜色(不是单一颜色)

How can i use random color in colors array(not in single color) in flutter

如果我们需要单一颜色的随机颜色, 有很多方法 喜欢

 color: Color(Random().nextInt(0xffffffff)).withAlpha(0xff);
 color: Colors.primaries[Random().nextInt(Colors.primaries.length)],
 color: Colors.primaries[Random().nextInt(Colors.primaries.length)],

如果我在颜色数组中使用上面的颜色代码,它会显示错误,

但我想在颜色数组中使用随机颜色

喜欢

              colors: <Color>[
                      randomColor,
                      randomColor,
                      randomColor,
                    ],

我的完整代码

 Ink(
                decoration: const BoxDecoration(
                  gradient: LinearGradient(
                    colors: <Color>[
                      Colors.blue,
                      Colors.red,
                      Colors.green,
                    ],
                  ),
                  borderRadius: BorderRadius.all(Radius.circular(80.0)),
                ),
),

请帮助某人。提前致谢。

您可以按照以下方式进行

final List<Color> colorCollection = <Color>[];

@override
void initState() {
  super.initState();
  addColorToArray();
}



void addColorToArray() { //Here you can add color as your requirement and call it in initState
    colorCollection.add(Colors.green);
    colorCollection.add(Colors.black);
    colorCollection.add(Colors.green);
    colorCollection.add(Colors.black);
    colorCollection.add(Colors.green);
    colorCollection.add(Colors.black);
    colorCollection.add(Colors.green);
    colorCollection.add(Colors.black);
    colorCollection.add(Colors.green);
  }

在你想放置随机颜色的地方使用它

color: colorCollection[random.nextInt(9)]

Ink(
                decoration: const BoxDecoration(
                  gradient: LinearGradient(
                    colors: colorCollection[random.nextInt(9)],
                  ),
                  borderRadius: BorderRadius.all(Radius.circular(80.0)),
                ),
),

希望对你有用

您定义的颜色不固定

 color: Color(Random().nextInt(0xffffffff)).withAlpha(0xff);
 color: Colors.primaries[Random().nextInt(Colors.primaries.length)],
 color: Colors.primaries[Random().nextInt(Colors.primaries.length)],

这就是你在 LinearGradient 中出现错误的原因,因为你将 BoxDecoration 声明为常量。

Evaluation of this constant expression throws an exception

要解决您的问题,只需省略 BoxDecoration 之前的 const

Ink(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              colors: <Color>[
                randomColor,
                randomColor,
                randomColor,
              ],
            ),
            borderRadius: const BorderRadius.all(Radius.circular(80.0)),
          ),
        ),