Flutter ExpansionPanel 可展开的收缩控件
Posted loaderman
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter ExpansionPanel 可展开的收缩控件相关的知识,希望对你有一定的参考价值。
文档:https://api.flutter.dev/flutter/material/ExpansionPanel-class.html
demo:
import ‘package:flutter/material.dart‘; class ExpansionPanelItem final String headerText; final Widget body; bool isExpanded; ExpansionPanelItem( this.headerText, this.body, this.isExpanded, ); class ExpansionPanelDemo extends StatefulWidget @override _ExpansionPanelDemoState createState() => _ExpansionPanelDemoState(); class _ExpansionPanelDemoState extends State<ExpansionPanelDemo> List<ExpansionPanelItem> _expansionPanelItems; @override void initState() super.initState(); _expansionPanelItems = <ExpansionPanelItem>[ ExpansionPanelItem( headerText: ‘Panel A‘, body: Container( padding: EdgeInsets.all(16.0), width: double.infinity, child: Text(‘Content for Panel A.‘), ), isExpanded: false, ), ExpansionPanelItem( headerText: ‘Panel B‘, body: Container( padding: EdgeInsets.all(16.0), width: double.infinity, child: Text(‘Content for Panel B.‘), ), isExpanded: false, ), ExpansionPanelItem( headerText: ‘Panel C‘, body: Container( padding: EdgeInsets.all(16.0), width: double.infinity, child: Text(‘Content for Panel C.‘), ), isExpanded: false, ), ]; @override Widget build(BuildContext context) return Scaffold( appBar: AppBar( title: Text(‘ExpansionPanelDemo‘), elevation: 0.0, ), body: Container( padding: EdgeInsets.all(16.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ ExpansionPanelList( expansionCallback: (int panelIndex, bool isExpanded) setState(() _expansionPanelItems[panelIndex].isExpanded = !isExpanded; ); , children: _expansionPanelItems.map( (ExpansionPanelItem item) return ExpansionPanel( isExpanded: item.isExpanded, body: item.body, headerBuilder: (BuildContext context, bool isExpanded) return Container( padding: EdgeInsets.all(16.0), child: Text( item.headerText, style: Theme.of(context).textTheme.title, ), ); , ); ).toList(), ), ], ), ), );
效果:
以上是关于Flutter ExpansionPanel 可展开的收缩控件的主要内容,如果未能解决你的问题,请参考以下文章
Flutter ExpansionPanel 不在 ListView 上展开
Flutter Wrap 小部件对齐:在 ExpansionPanel 内部
Flutter学习日记之ExpansionPanel/ExpansionTile实现分级列表(可开闭)