Flutter 类型';布尔';不是类型为';列表<;布尔>';属于';功能结果';

Flutter 类型';布尔';不是类型为';列表<;布尔>';属于';功能结果';,flutter,Flutter,我正在尝试创建一个可折叠的listView 为了使列表中的每一项都能单独处理单击,我创建了一个bool列表。但是当我构建页面时,我有这个错误。 我不知道我做错了什么 你能帮我吗 List<bool> toogleList; Container( padding: EdgeInsets.fromLTRB(23, 0, 20, 20), child: ListView.builder( physics: new NeverScrollableScrollPhysics(

我正在尝试创建一个可折叠的listView

为了使列表中的每一项都能单独处理单击,我创建了一个bool列表。但是当我构建页面时,我有这个错误。 我不知道我做错了什么

你能帮我吗

List<bool> toogleList;

Container(
  padding: EdgeInsets.fromLTRB(23, 0, 20, 20),
  child: ListView.builder(
    physics: new NeverScrollableScrollPhysics(),
    shrinkWrap: true,
    itemCount: widget.responseDaily['list'].length,
    itemBuilder: (BuildContext ctxt, int index) {
      setState(() {
        toogleList.insert(index, false);
      });
      return InkWell(
        onTap: (){
          setState(() {
            toogleList[index] = !toogleList[index];
          });
        },
        child: Flexible(
          flex: 2,
          fit: FlexFit.tight,
          child: RotationTransition(
            turns: (toogleList[index] == false) ? AlwaysStoppedAnimation(0) : AlwaysStoppedAnimation(180 / 360),
            child: Icon(
              Icons.expand_less,
              size: 16,
            ),
         ),
       ),
  ),
)
List-toogleList;
容器(
填充:来自LTRB(23,0,20,20)的边缘设置,
子项:ListView.builder(
物理学:新NeverscrollableScroll物理学(),
收缩膜:对,
itemCount:widget.responseday['list'].length,
itemBuilder:(BuildContext ctxt,int index){
设置状态(){
插入(索引,false);
});
回墨槽(
onTap:(){
设置状态(){
toogleList[index]=!toogleList[index];
});
},
儿童:灵活(
弹性:2,
适合:FlexFit.tight,
子:旋转变换(
转弯:(toogleList[索引]==false)?AlwaysStoppedAnimation(0):AlwaysStoppedAnimation(180/360),
子:图标(
Icons.expand_less,
尺码:16,
),
),
),
),
)
class\u状态扩展
{
List toogleList=[false,false,false];
@凌驾
小部件构建(构建上下文)
{
返回材料PP
(
家:脚手架
(
主体:容器
(
填充:仅限边缘设置(顶部:100),
宽度:double.infinity,
颜色:颜色,蓝色,
子项:ListView.builder
(
物品计数:3,
itemBuilder:(构建上下文,int索引)
{
回程卡
(
孩子:InkWell
(
子项:文本(toogleList[index].toString()),
onTap:()
{
打印(索引);
设置状态()
{
toogleList[index]=!toogleList[index];
});
},
)
);
}
)
)
),
);
}
}

首先,当
列表视图
正在生成其项时,不应调用
设置状态
。如果调用,则会出现错误

其次,您的逻辑将继续在每个项目单击上插入
false
,并且
bool
值不会按预期更改(在项目上多次单击时,它们始终为true):

相反:

生成一个
bool
列表,其值设置为
false

  List<bool> toogleList = List.generate(widget.responseDaily['list'].length, (index) => false);


List toogleList;=[];感谢您的回答,但它不会改变您访问
toogleList
?@bchoisyonTap()的任何地方索引是否正确打印。它是否与您单击的数字相同?@void no仅在此处单击false,您将看到特定墨水池更改为true,反之亦然。true can false状态可以是您的可折叠状态谢谢。这是生成器中的set state调用。
  List<bool> toogleList = List.generate(widget.responseDaily['list'].length, (index) => false);

 onTap: () {
     setState(() {
     toogleList[index] = !toogleList[index];
     });
   },