代码:

import 'package:flutter/material.dart';

class ExpansionPaneListDemo extends StatefulWidget {


@override
_ExpansionPaneListDemoState createState() => _ExpansionPaneListDemoState();
}

class _ExpansionPaneListDemoState extends State<ExpansionPaneListDemo> {


List<int> mlist;//
List<ExpandStateBean> expandStateList;

_ExpansionPaneListDemoState(){//初始化
mlist = new List();
expandStateList = new List();
for (var i = 0; i < 10; i++) {
mlist.add(i);
expandStateList.add(ExpandStateBean(i, false));
}
}


_setCurrentIndex(int index,isExpand){
setState(() {
expandStateList.forEach((item){
if (item.index == index) {
item.isOpen = !isExpand;
}
});
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('expansion List')),
body: SingleChildScrollView(//

child: ExpansionPanelList(//必须放在滚动控件下
expansionCallback: (index,bol){
_setCurrentIndex(index, bol);
},
children: mlist.map((index){
return ExpansionPanel(
headerBuilder: (context,isExpanded){
return ListTile(//没展开的数据
title: Text('No.$index'),
);
},
body: ListTile(//展开的数据
title: Text('xx $index'),
),
isExpanded: expandStateList[index].isOpen
);

}).toList(),
),

),
);
}
}


class ExpandStateBean{
var isOpen;
var index;
ExpandStateBean(this.index,this.isOpen);

}