/* *@author: Amjad Amireh *@Date:27/5/2020 *@param:listItems , headerTitle *@return:ListItem Expand *@desc: */ import 'package:flutter/material.dart'; class ExpandableItem extends StatefulWidget { final List listItems; final String headerTitle; ExpandableItem(this.headerTitle, this.listItems); @override _ExpandableItemState createState() => _ExpandableItemState(); } class _ExpandableItemState extends State { bool isExpand = false; @override void initState() { super.initState(); isExpand = false; } @override Widget build(BuildContext context) { List listItem = this.widget.listItems; return Container( child: Padding( padding: (isExpand == true) ? const EdgeInsets.all(6.0) : const EdgeInsets.all(8.0), child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: (isExpand != true) ? BorderRadius.all(Radius.circular(50)) : BorderRadius.all(Radius.circular(25)), ), child: ExpansionTile( key: PageStorageKey(this.widget.headerTitle), title: Container( width: double.infinity, child: Text( this.widget.headerTitle, style: TextStyle( fontSize: (isExpand != true) ? 18 : 22, color: Colors.black, fontWeight: FontWeight.bold), )), trailing: (isExpand == true) ? Icon( Icons.keyboard_arrow_up, color: Colors.black, ) : Icon(Icons.keyboard_arrow_down, color: Colors.black), onExpansionChanged: (value) { setState(() { isExpand = value; }); }, children: [ for (final item in listItem) Padding( padding: const EdgeInsets.all(8.0), child: InkWell( onTap: () { print(Text( "Selected Item $item " + this.widget.headerTitle)); //========Stop Snak bar=========== Scaffold.of(context).showSnackBar(SnackBar(backgroundColor: Colors.black,duration:Duration(microseconds: 500),content: Text("Selected Item $item "+this.widget.headerTitle ))); }, child: Container( width: double.infinity, decoration: BoxDecoration( color: Colors.white, border: Border( top: BorderSide( color: Theme.of(context).dividerColor))), child: Padding( padding: const EdgeInsets.all(8.0), child: Text( item, style: TextStyle(color: Colors.black), ), )), ), ) ], ), ), ), ); } }