效果

import 'package:flutter/material.dart';
class ExpansionPanelListDemo extends StatefulWidget {
ExpansionPanelListDemo({Key key}) : super(key: key);
@override
_ExpansionPanelListDemoState createState() => _ExpansionPanelListDemoState();
}
class _ExpansionPanelListDemoState extends State<ExpansionPanelListDemo> {
var currentPanelIndex = -1;
List<int> mList;
List<ExpandStateBean> expandStateList;
_ExpansionPanelListDemoState(){
mList = new List();
expandStateList = new List();
for (int 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('ExpansionPanel Demo'),),
body: SingleChildScrollView(
child: ExpansionPanelList(
expansionCallback: (index,bol){
_setCurrentIndex(index,bol);
},
children: mList.map((index){
return ExpansionPanel(
headerBuilder: (context,isExpanded){
return ListTile(
title:Text('This is No.$index')
);
},
body: ListTile(
title: Text('expansion no $index')
),
isExpanded: expandStateList[index].isOpen
);
}).toList(),
),
),
);
}
}
class ExpandStateBean{
var isOpen;
var index;
ExpandStateBean(this.index,this.isOpen);
}
本文介绍如何使用 Flutter 中的 ExpansionPanelList 控件,展示了一个实例,展示了如何通过 ExpansionPanelList 动态切换面板展开状态,并管理各个面板的展开状态。通过 setState 更新列表中每个 item 的 isOpen 值,实现了数据驱动的交互效果。
2204

被折叠的 条评论
为什么被折叠?



