Flutter-从列表视图中选择项目时“在构建期间调用了setState()或markNeedsBuild()”

时间:2019-12-03 10:26:25

标签: flutter

我已经创建了一个这样的列表(外部构建方法):

final userTypes = ["Employee", "Candidate", "Visitor", "Staff"];

我还创建了一个函数来获取这样的选定列表项(外部构建方法):

_onSelected(int index){
    setState(() {
      selectedIndex = index;
    });
  }

并且我正在将该函数与这样的listview构建器一起使用(在内部构建方法和支架中):

ListView.builder(
                      scrollDirection: Axis.vertical,
                      shrinkWrap: true,
                      itemCount: userTypes.length,
                      itemBuilder: (context, index) {
                        return Container(
                          color: selectedIndex != null && selectedIndex == index
                              ? Colors.red
                              : Colors.white,
                          margin: EdgeInsets.fromLTRB(0, 10, 0, 0),
                          child: ListTile(
                            title: Text(userTypes[index],
                                style: TextStyle(
                                    fontSize: 20, color: Colors.white)),
                            onTap: _onSelected(index),
                          ),
                          decoration: BoxDecoration(
                              borderRadius: BorderRadius.all(Radius.circular(35)),
                              border: Border.all(
                                  color: Colors.white,
                                  width: 1,
                                  style: BorderStyle.solid)),
                        );
                      },
                    )

1 个答案:

答案 0 :(得分:1)

您应该使用

onTap: () => _onSelected(index),

代替

onTap: _onSelected(index),