请问我在这里做错了什么。我试图在扩展面板列表中有一个列表视图,如果我只渲染两个扩展列表,则代码运行不会出现错误。但如果我渲染了两个以上,并且我尝试展开任何其他面板列表,它会返回以下错误: 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 },\nRun Code Online (Sandbox Code Playgroud)\n这是我在扩展面板主体中返回的列表视图
\nWidget _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 }\nRun 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];\nRun Code Online (Sandbox Code Playgroud)\n谢谢。
\n这个问题是_isOpen因为它只包含两个值但在五个小部件上使用。bool在本例中,我们需要制作包含五个的列表。
List<bool> _isOpen = [true, false, false, false, false];
并在每个上使用唯一索引ExpansionPanel
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 )\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6304 次 |
| 最近记录: |