flutter控件之ExpansionPanelList

本文介绍了一个使用Flutter实现的扩展面板列表组件示例。该组件能够通过点击切换面板的展开与折叠状态,并保持只有一个面板处于展开状态。文章提供了完整的StatefulWidget及State类的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import 'package:flutter/material.dart';
class LearnExpansionPanelList extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    return new _LearnExpansionPanelList();
  }
}
class _LearnExpansionPanelList extends State<LearnExpansionPanelList>{
  var currentPanelIndex=-1;//设置-1默认全部闭合
  List<int> mList;
  _LearnExpansionPanelList(){
    mList=new List();
    for(int i=0;i<5;i++){
      mList.add(i);
    }
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new SingleChildScrollView(
        child:new Column(
          children: <Widget>[
            new Text('这是一个自带的,样子挺丑的吧'),
            new ExpansionPanelList(
              expansionCallback: (panelIndex,isExpanded){
                setState(() {
                  currentPanelIndex=(currentPanelIndex!=panelIndex?panelIndex:-1);
                });
              },
              children: mList.map((i){
                return new ExpansionPanel(
                  headerBuilder: (context,isExpanded){
                    return new ListTile(
                      title: new Text('这是标题$i'),
                    );
                  },
                  body:new Padding(
                    padding: EdgeInsets.all(30.0),
                    child:new ListBody(
                      children: <Widget>[
                        new Text('这是标题$i的内容'),
                      ],
                    ),
                  ),
                  isExpanded: currentPanelIndex==i,
                );
              }).toList(),
            ),
            new Text('拉一个好看点的吧,类似qq分组之类的'),
//            new ListView.builder(
//                itemBuilder: (BuildContext context, int index){
//                  return new ListTile(
//                    leading: new Icon(Icons.add),
//                    title: new Text('111'),
//                  );
//                },
//              itemCount: 1,
//            ),
          ],
        ),
      ),
    );
  }
}

  

转载于:https://www.cnblogs.com/pythonClub/p/10603904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值