RangeError(RangeError(索引):无效值:不在包含范围 0..1: 2 内)使用两个以上扩展面板列表时出现抖动

Yus*_*suf 6 dart flutter

请问我在这里做错了什么。我试图在扩展面板列表中有一个列表视图,如果我只渲染两个扩展列表,则代码运行不会出现错误。但如果我渲染了两个以上,并且我尝试展开任何其他面板列表,它会返回以下错误: RangeError (RangeError (index): Invalid value: Not in Included range 0..1: 2.

\n

下面是我的代码示例。谢谢你们。

\n
                        ExpansionPanelList(\n                          children: [\n                            ExpansionPanel(\n                              isExpanded: _isOpen[0],\n                              headerBuilder: (context, isOpen) {\n                                return Row(\n                                  children: [\n                                    SizedBox(width: 10.w),\n                                    Center(\n                                      child: Text(\n                                        "Ball Games \xe2\x9a\xbd ",\n                                        style: TextStyle(\n                                            fontSize: 17.sp,\n                                            fontWeight: FontWeight.w400,\n                                            color: Color(0xff333333)),\n                                      ),\n                                    ),\n                                  ],\n                                );\n                              },\n                              body: SingleChildScrollView(\n                                child: Column(\n                                  mainAxisSize: MainAxisSize.min,\n                                  children: [\n                                    _myListView(),\n                                    // _myListView(),\n                                  ],\n                                ),\n                              ),\n                            ),\n                            ExpansionPanel(\n                              isExpanded: _isOpen[1],\n                              headerBuilder: (context, isOpen) {\n                                return Row(\n                                  children: [\n                                    SizedBox(width: 10.w),\n                                    Center(\n                                      child: Text(\n                                        "Racket & Bat ",\n                                        style: TextStyle(\n                                            fontSize: 17.sp,\n                                            fontWeight: FontWeight.w400,\n                                            color: Color(0xff333333)),\n                                      ),\n                                    ),\n                                  ],\n                                );\n                              },\n                              body: SingleChildScrollView(\n                                child: Column(\n                                  mainAxisSize: MainAxisSize.min,\n                                  children: [\n                                    _myListView(),\n                                    // _myListView(),\n                                  ],\n                                ),\n                              ),\n                            ),\n                            ExpansionPanel(\n                              isExpanded: _isOpen[1],\n                              headerBuilder: (context, isOpen) {\n                                return Row(\n                                  children: [\n                                    SizedBox(width: 10.w),\n                                    Center(\n                                      child: Text(\n                                        'Winter ',\n                                        style: TextStyle(\n                                            fontSize: 17.sp,\n                                            fontWeight: FontWeight.w400,\n                                            color: Color(0xff333333)),\n                                      ),\n                                    ),\n                                  ],\n                                );\n                              },\n                              body: SingleChildScrollView(\n                                child: Column(\n                                  mainAxisSize: MainAxisSize.min,\n                                  children: [\n                                    _myListView(),\n                                    // _myListView(),\n                                  ],\n                                ),\n                              ),\n                            ),\n                            ExpansionPanel(\n                              isExpanded: _isOpen[1],\n                              headerBuilder: (context, isOpen) {\n                                return Row(\n                                  children: [\n                                    SizedBox(width: 10.w),\n                                    Center(\n                                      child: Text(\n                                        'Water \xe2\x80\x8d\xe2\x99\x80\xef\xb8\x8f ',\n                                        style: TextStyle(\n                                            fontSize: 17.sp,\n                                            fontWeight: FontWeight.w400,\n                                            color: Color(0xff333333)),\n                                      ),\n                                    ),\n                                  ],\n                                );\n                              },\n                              body: SingleChildScrollView(\n                                child: Column(\n                                  mainAxisSize: MainAxisSize.min,\n                                  children: [\n                                    _myListView(),\n                                    // _myListView(),\n                                  ],\n                                ),\n                              ),\n                            ),\n                            ExpansionPanel(\n                              isExpanded: _isOpen[1],\n                              headerBuilder: (context, isOpen) {\n                                return Row(\n                                  children: [\n                                    SizedBox(width: 10.w),\n                                    Center(\n                                      child: Text(\n                                        'Others ',\n                                        style: TextStyle(\n                                            fontSize: 17.sp,\n                                            fontWeight: FontWeight.w400,\n                                            color: Color(0xff333333)),\n                                      ),\n                                    ),\n                                  ],\n                                );\n                              },\n                              body: SingleChildScrollView(\n                                child: Column(\n                                  mainAxisSize: MainAxisSize.min,\n                                  children: [\n                                    _myListView(),\n                                    // _myListView(),\n                                  ],\n                                ),\n                              ),\n                            ),\n                          ],\n                          expansionCallback: (i, isOpen) {\n                            setState(() {\n                              _isOpen[i] = !isOpen; //this is where the error is pointing to\n                            });\n                          },\n
Run Code Online (Sandbox Code Playgroud)\n

这是我在扩展面板主体中返回的列表视图

\n
Widget _myListView() {\n    return MediaQuery.removePadding(\n      context: context,\n      removeTop: true,\n      child: ListView(\n        shrinkWrap: true,\n        physics: ScrollPhysics(),\n        children: List1.keys.map((String key) {\n          return new CheckboxListTile(\n            title: new Text(key),\n            value: List1[key],\n            activeColor: Colors.black,\n            checkColor: Colors.white,\n            onChanged: (bool? value) {\n              setState(() {\n                List1[key] = value!;\n              });\n            },\n          );\n        }).toList(),\n      ),\n    );\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

列表1

\n
\n  Map<String, bool> List1 = {\n    'Bubble Football \xe2\x9a\xbd': false,\n    'Futsal ': false,\n    'Beach Volleyball ': false,\n    'Volleyball ': false,\n    'Dodgeball ': false,\n    'Rugby ': false,\n    'American Footbal ': false,\n    'Korftbal ': false,\n    'Netbal \xe2\x9a\xbe': false,\n  };\n\n  List<bool> _isOpen = [true, false];\n
Run Code Online (Sandbox Code Playgroud)\n

谢谢。

\n

Md.*_*ikh 2

这个问题是_isOpen因为它只包含两个值但在五个小部件上使用。bool在本例中,我们需要制作包含五个的列表。

\n

List<bool> _isOpen = [true, false, false, false, false];

\n

并在每个上使用唯一索引ExpansionPanel

\n
    ExpansionPanelList(\n          children: [\n            ExpansionPanel(\n              isExpanded: _isOpen[0],\n              headerBuilder: (context, isOpen) {\n                return Row(\n                  children: const [\n                    SizedBox(width: 10),\n                    Center(\n                      child: Text(\n                        "Ball Games \xe2\x9a\xbd ",\n                        style: TextStyle(\n                            fontSize: 17,\n                            fontWeight: FontWeight.w400,\n                            color: Color(0xff333333)),\n                      ),\n                    ),\n                  ],\n                );\n              },\n              body: SingleChildScrollView(\n                child: Column(\n                  mainAxisSize: MainAxisSize.min,\n                  children: [\n                    _myListView(),\n                    // _myListView(),\n                  ],\n                ),\n              ),\n            ),\n            ExpansionPanel(\n              isExpanded: _isOpen[1],\n              headerBuilder: (context, isOpen) {\n                return Row(\n                  children: const [\n                    SizedBox(width: 10),\n                    Center(\n                      child: Text(\n                        "Racket & Bat ",\n                        style: TextStyle(\n                            fontSize: 17,\n                            fontWeight: FontWeight.w400,\n                            color: Color(0xff333333)),\n                      ),\n                    ),\n                  ],\n                );\n              },\n              body: SingleChildScrollView(\n                child: Column(\n                  mainAxisSize: MainAxisSize.min,\n                  children: [\n                    _myListView(),\n                    // _myListView(),\n                  ],\n                ),\n              ),\n            ),\n            ExpansionPanel(\n              isExpanded: _isOpen[2],\n              headerBuilder: (context, isOpen) {\n                return Row(\n                  children: const [\n                    SizedBox(width: 10),\n                    Center(\n                      child: Text(\n                        \'Winter \',\n                        style: TextStyle(\n                            fontSize: 17,\n                            fontWeight: FontWeight.w400,\n                            color: Color(0xff333333)),\n                      ),\n                    ),\n                  ],\n                );\n              },\n              body: SingleChildScrollView(\n                child: Column(\n                  mainAxisSize: MainAxisSize.min,\n                  children: [\n                    _myListView(),\n                    // _myListView(),\n                  ],\n                ),\n              ),\n            ),\n            ExpansionPanel(\n              isExpanded: _isOpen[3],\n              headerBuilder: (context, isOpen) {\n                return Row(\n                  children: const [\n                    SizedBox(width: 10),\n                    Center(\n                      child: Text(\n                        \'Water \xe2\x80\x8d\xe2\x99\x80\xef\xb8\x8f \',\n                        style: TextStyle(\n                            fontSize: 17,\n                            fontWeight: FontWeight.w400,\n                            color: Color(0xff333333)),\n                      ),\n                    ),\n                  ],\n                );\n              },\n              body: SingleChildScrollView(\n                child: Column(\n                  mainAxisSize: MainAxisSize.min,\n                  children: [\n                    _myListView(),\n                    // _myListView(),\n                  ],\n                ),\n              ),\n            ),\n            ExpansionPanel(\n              isExpanded: _isOpen[4],\n              headerBuilder: (context, isOpen) {\n                return Row(\n                  children: const [\n                    SizedBox(width: 10),\n                    Center(\n                      child: Text(\n                        \'Others \',\n                        style: TextStyle(\n                            fontSize: 17,\n                            fontWeight: FontWeight.w400,\n                            color: Color(0xff333333)),\n                      ),\n                    ),\n                  ],\n                );\n              },\n              body: SingleChildScrollView(\n                child: Column(\n                  mainAxisSize: MainAxisSize.min,\n                  children: [\n                    _myListView(),\n                    // _myListView(),\n                  ],\n                ),\n              ),\n            ),\n          ],\n          expansionCallback: (i, isOpen) {\n            setState(() {\n              _isOpen[i] = !isOpen; \n            });\n          },\n        )\n
Run Code Online (Sandbox Code Playgroud)\n