flutter两种写下拉列表的方式

个人认为第一种好看,但是两种方式都不能更改‘专业列表’部分背景颜色,让我很头疼
在这里插入图片描述
在这里插入图片描述

第一种:ExpansionTile

class ExpansionTileDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ExpansionTile(
      title:Text('专业列表'),
      leading:Icon(Icons.list),
        children:<Widget>[
          ListTile(
            title:Text('title'),
            subtitle:Text('subtitle'),
          ),
          ListTile(
            title:Text('title'),
            subtitle:Text('subtitle'),
          ),
          ListTile(
            title:Text('title'),
            subtitle:Text('subtitle'),
          ),
          ListTile(
            title:Text('title'),
            subtitle:Text('subtitle'),
          ),
        ],
    );
  }
}

在这里插入图片描述

第二种:ExpansionPanelList
外层必须包裹SingleChildScrollView

// 引入部分
ExpansionTileDemo(),
 SingleChildScrollView(
     child: Container(
       child: BuildExpansionPanelList(),
     ),
   ),
class BuildExpansionPanelList extends StatefulWidget {
  @override
  _BuildExpansionPanelListState createState() => _BuildExpansionPanelListState();
}

class _BuildExpansionPanelListState extends State<BuildExpansionPanelList> {
  // List<bool> dataList = List.generate(20, (index) => false).toList();
  List<bool> dataList = List.generate(1, (index) => false).toList();
  @override
  Widget build(BuildContext context) {
    return Container(
      child:ExpansionPanelList(
        elevation: 0,
        expansionCallback: (index, isExpanded) {
          setState(() {
            dataList[index] = !isExpanded;
          });
        },
        children: dataList.map((value) {
          return ExpansionPanel(
            isExpanded: value,
              canTapOnHeader:true,
            headerBuilder: (context, isExpanded) {
              return Container(
                child:ListTile(
                  title: Text('专业列表'),
                ),
              );
            },
            body: Container(
              // color:Colors.green,
              child:ListView.builder(
                  shrinkWrap:true,
                  physics:NeverScrollableScrollPhysics(),
                  itemCount:subMsgList.length,
                  itemBuilder: (BuildContext context,int index){
                    return Container(
                      margin:EdgeInsets.fromLTRB(10,0,10,0),
                      height:40,
                      child:Row(
                        children:<Widget>[
                          Text(subMsgList[index]['subName'],style:TextStyle(color:Color.fromRGBO(71, 80, 133, 1.0),)),
                          Expanded(
                            child:SizedBox(),
                          ),
                          Container(
                            width:80,
                            height:22,
                            padding:EdgeInsets.fromLTRB(0,3,0,3),
                            decoration:new BoxDecoration(
                              borderRadius:BorderRadius.all(Radius.circular(4.0)),
                              color:Colors.blue,
                            ),
                            child:Center(
                              child:Text(subMsgList[index]['subKind'],style:TextStyle(color:Colors.white,fontSize:12)),
                            ),
                          ),
                          Container(
                            margin:EdgeInsets.fromLTRB(10,0,10,0),
                            padding:EdgeInsets.fromLTRB(2,3,2,3),
                            decoration:new BoxDecoration(
                              borderRadius:BorderRadius.all(Radius.circular(4.0)),
                              color:Colors.blue,
                            ),
                            child:Text(subMsgList[index]['kind'],style:TextStyle(color:Colors.white,fontSize:12)),
                          ),
                        ],
                      ),
                    );
                  }
              ),
            ),
          );
        }).toList(),
      ),
    );
  }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值