从Firebase检索到的gridView项目颜色不同?

1wnzp6jl  于 2023-02-20  发布在  其他
关注(0)|答案(2)|浏览(123)

我是个新手,我有点困惑。尝试在gridView项目上设置不同的背景颜色,但是我所知道的所有方法似乎都不起作用,因为数据来自firebase。

var colors = [
    Colors.red,
    Colors.blue,
    Colors.cyan,
    Colors.green,
    Colors.yellow,
  ];

  Widget gridPost(
    String Name,
    String JobTitle,
    String Company,
    String photo,
  ) {
    return Container(
      decoration: BoxDecoration(
        borderRadius: BorderRadius.all(Radius.circular(20)),
        color: colors[index]
      )),}

由于colors[index]的'index'部分,这不起作用。如果我将int index添加到gridPost小部件,它也会将其作为

return gridPost(
                    snapshot.data!.docs[index]['index'],)

但这也不起作用,因为它不存在于Firebase中。添加一个虚拟字段到Firebase也不起作用。请帮助:)
这或多或少就是我想要的

gkl3eglg

gkl3eglg1#

如果你想创建一个随机的颜色,并使用它在背景中,你可以这样做

Widget gridPost(
String Name,
String JobTitle,
String Company,
String photo,
) {
return Container(
  decoration: BoxDecoration(
    borderRadius: BorderRadius.all(Radius.circular(20)),
    color: Color((math.Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(1.0)
  )),}

EDIT如果要从列表中选择,请尝试以下代码:

Widget gridPost(
String Name,
String JobTitle,
String Company,
String photo,
 ) {
return Container(
  decoration: BoxDecoration(
    borderRadius: BorderRadius.all(Radius.circular(20)),
    color: colors[math.Random().nextInt(colors.length)]
  )),}
2uluyalo

2uluyalo2#

尝试创建一个如下的方法:

List<Color> colors = [
    Colors.red,
    Colors.blue,
    Colors.cyan,
    Colors.green,
    Colors.yellow,
  ];


Widget gridPost(
    //add other properties that you need
     int index,
    ) {
    return Container(
      decoration: BoxDecoration(
        borderRadius: BorderRadius.all(Radius.circular(20)),
        color: colors[index]
      )),}

如下所示调用方法:

return gridPost(snapshot.data!.docs[index]['index'])

相关问题