首页 > 解决方案 > 数组中的颜色

问题描述

尝试在 List.generate 中使用我的数组中的颜色,我只有 4 种颜色,每个新颜色都必须使用数组中第一个颜色的颜色:

var colorList = [Color(0xFF0057ff42), Color(0xFFffad3142), Color(0xFF2ed1b442), Color(0xFF00c6ff42)];
GridView.count(
    crossAxisCount: 2,
    shrinkWrap: true,
    physics: ScrollPhysics(),
    scrollDirection: Axis.vertical,
    children: List.generate(10, (index) {
        return Container(
            margin: EdgeInsets.all(15.0),
            child: Stack(
                children: < Widget > [
                    Container(
                        margin: EdgeInsets.only(top: 50),
                        alignment: Alignment.center,
                        padding: EdgeInsets.only(top: 35),
                        decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(10),
                            color: Colors.white,
                            boxShadow: [
                                BoxShadow(color: Colors.black.withOpacity(0.2), offset: Offset(0, 3), blurRadius: 7),
                            ],
                        ),
                        child: Text(
                            'Игры',
                            textAlign: TextAlign.center,
                            style: TextStyle(
                                color: const Color(0xFF4F4F4F),
                                    fontSize: 16,
                                    fontWeight: FontWeight.bold,
                            ),
                        ),
                    ),
                    Positioned(
                        top: 0,
                        left: 0.0,
                        right: 0.0,
                        child: MaterialButton(
                            onPressed: null,
                            textColor: Colors.white,
                            disabledColor: colorList[index],
                            child: Icon(
                                Icons.camera_alt,
                                size: 40,
                            ),
                            padding: EdgeInsets.all(30),
                            shape: CircleBorder(),
                        )
                    )
                ]
            )
        );
    })
),

我得到错误:

“RangeError(索引):无效值:不在包含范围 0..3:4 内”

我知道这是因为颜色的数量,我只有 4 种,但在我的列表中有 10 种。你还能怎么做呢?

标签: flutterandroid-studiodart

解决方案


您可以像这样使用模运算符 (%)重复颜色。

disabledColor: colorList[index % colorList.length],

推荐阅读