From 57ab6546ab1536043428e5728c7ad4fac3a8e4ee Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 5 Apr 2020 21:35:11 +1000 Subject: [PATCH] Expandable panel for subcategory and part list for category view --- lib/widget/category_display.dart | 79 ++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 18 deletions(-) diff --git a/lib/widget/category_display.dart b/lib/widget/category_display.dart index 0dfe3db4..d1a949af 100644 --- a/lib/widget/category_display.dart +++ b/lib/widget/category_display.dart @@ -83,6 +83,9 @@ class _CategoryDisplayState extends State { }); } + bool _subcategoriesExpanded = false; + bool _partListExpanded = true; + Widget getCategoryDescriptionCard() { if (category == null) { return Card( @@ -112,27 +115,63 @@ class _CategoryDisplayState extends State { title: Text(_titleString), ), drawer: new InvenTreeDrawer(context), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, + body: ListView( + //mainAxisAlignment: MainAxisAlignment.start, + //mainAxisSize: MainAxisSize.max, children: [ getCategoryDescriptionCard(), - Text( - "Subcategories - ${_subcategories.length}", - textAlign: TextAlign.left, - style: TextStyle(fontWeight: FontWeight.bold), + ExpansionPanelList( + expansionCallback: (int index, bool isExpanded) { + print("callback!"); + setState(() { + + switch (index) { + case 0: + _subcategoriesExpanded = !isExpanded; + break; + case 1: + _partListExpanded = !isExpanded; + break; + default: + break; + } + }); + }, + children: [ + ExpansionPanel( + headerBuilder: (BuildContext context, bool isExpanded) { + return ListTile( + title: Text("Subcategories"), + trailing: Text("${_subcategories.length}"), + onTap: () { + setState(() { + _subcategoriesExpanded = !_subcategoriesExpanded; + }); + }, + ); + }, + body: SubcategoryList(_subcategories), + isExpanded: _subcategoriesExpanded, + ), + ExpansionPanel( + headerBuilder: (BuildContext context, bool isExpanded) { + return ListTile( + title: Text("Parts"), + trailing: Text("${_parts.length}"), + onTap: () { + setState(() { + _partListExpanded = !_partListExpanded; + }); + }, + ); + }, + body: PartList(_parts), + isExpanded: _partListExpanded, + ) + ], ), - Expanded(child: SubcategoryList(_subcategories)), - Divider(), - Text("Parts - ${_parts.length}", - textAlign: TextAlign.left, - style: TextStyle(fontWeight: FontWeight.bold), - ), - Expanded(child: PartList(_parts)), ] ) - ) ); } } @@ -171,7 +210,9 @@ class SubcategoryList extends StatelessWidget { @override Widget build(BuildContext context) { - return ListView.builder(itemBuilder: _build, itemCount: _categories.length); + return ListView.builder( + shrinkWrap: true, + itemBuilder: _build, itemCount: _categories.length); } } @@ -217,6 +258,8 @@ class PartList extends StatelessWidget { @override Widget build(BuildContext context) { - return ListView.builder(itemBuilder: _build, itemCount: _parts.length); + return ListView.builder( + shrinkWrap: true, + itemBuilder: _build, itemCount: _parts.length); } }