2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 13:36:50 +00:00

Add separator divider elements in lists

This commit is contained in:
Oliver Walters 2021-02-09 12:28:14 +11:00
parent 18b4783c11
commit 1c0b469020
10 changed files with 211 additions and 134 deletions

View File

@ -15,48 +15,96 @@ class InvenTreeAboutWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
List<Widget> tiles = [];
tiles.add(
ListTile(
title: Text(
I18N.of(context).serverDetails,
style: TextStyle(fontWeight: FontWeight.bold),
),
)
);
if (InvenTreeAPI().isConnected()) {
tiles.add(
ListTile(
title: Text(I18N.of(context).address),
subtitle: Text(InvenTreeAPI().baseUrl.isNotEmpty ? InvenTreeAPI().baseUrl : "Not connected"),
)
);
tiles.add(
ListTile(
title: Text(I18N.of(context).version),
subtitle: Text(InvenTreeAPI().version.isNotEmpty ? InvenTreeAPI().version : "Not connected"),
)
);
tiles.add(
ListTile(
title: Text("Server Instance"),
subtitle: Text(InvenTreeAPI().instance.isNotEmpty ? InvenTreeAPI().instance : "Not connected"),
)
);
} else {
tiles.add(
ListTile(
title: Text("Not Connected"),
subtitle: Text(
"InvenTree server not connected",
style: TextStyle(fontStyle: FontStyle.italic),
)
)
);
}
tiles.add(
ListTile(
title: Text(
I18N.of(context).appDetails,
style: TextStyle(fontWeight: FontWeight.bold),
),
)
);
tiles.add(
ListTile(
title: Text(I18N.of(context).name),
subtitle: Text("${info.appName}"),
)
);
tiles.add(
ListTile(
title: Text("Package Name"),
subtitle: Text("${info.packageName}"),
)
);
tiles.add(
ListTile(
title: Text(I18N.of(context).version),
subtitle: Text("${info.version}"),
)
);
tiles.add(
ListTile(
title: Text(I18N.of(context).build),
subtitle: Text("${info.buildNumber}"),
)
);
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text("About InvenTree"), title: Text("About InvenTree"),
), ),
body: ListView( body: ListView(
children: <Widget>[ children: ListTile.divideTiles(
ListTile( context: context,
title: Text(I18N.of(context).serverDetails), tiles: tiles,
), ).toList(),
ListTile(
title: Text(I18N.of(context).address),
subtitle: Text(InvenTreeAPI().baseUrl.isNotEmpty ? InvenTreeAPI().baseUrl : "Not connected"),
),
ListTile(
title: Text(I18N.of(context).version),
subtitle: Text(InvenTreeAPI().version.isNotEmpty ? InvenTreeAPI().version : "Not connected"),
),
ListTile(
title: Text("Server Instance"),
subtitle: Text(InvenTreeAPI().instance.isNotEmpty ? InvenTreeAPI().instance : "Not connected"),
),
Divider(),
ListTile(
title: Text(I18N.of(context).appDetails),
),
ListTile(
title: Text(I18N.of(context).name),
subtitle: Text("${info.appName}"),
),
ListTile(
title: Text("Package Name"),
subtitle: Text("${info.packageName}"),
),
ListTile(
title: Text(I18N.of(context).version),
subtitle: Text("${info.version}"),
),
ListTile(
title: Text(I18N.of(context).build),
subtitle: Text("${info.buildNumber}"),
)
],
) )
); );
} }

View File

@ -300,7 +300,10 @@ class _InvenTreeLoginSettingsState extends State<InvenTreeLoginSettingsWidget> {
), ),
body: Container( body: Container(
child: ListView( child: ListView(
children: children, children: ListTile.divideTiles(
context: context,
tiles: children
).toList(),
) )
), ),
floatingActionButton: FloatingActionButton( floatingActionButton: FloatingActionButton(

View File

@ -34,14 +34,15 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
), ),
body: Center( body: Center(
child: ListView( child: ListView(
children: <Widget>[ children: ListTile.divideTiles(
context: context,
tiles: <Widget>[
ListTile( ListTile(
title: Text(I18N.of(context).profile), title: Text(I18N.of(context).profile),
subtitle: Text("Configure user profile settings"), subtitle: Text("Configure user profile settings"),
leading: FaIcon(FontAwesomeIcons.user), leading: FaIcon(FontAwesomeIcons.user),
onTap: _editServerSettings, onTap: _editServerSettings,
), ),
Divider(),
ListTile( ListTile(
title: Text(I18N.of(context).about), title: Text(I18N.of(context).about),
subtitle: Text(I18N.of(context).appDetails), subtitle: Text(I18N.of(context).appDetails),
@ -60,7 +61,8 @@ class _InvenTreeSettingsState extends State<InvenTreeSettingsWidget> {
leading: FaIcon(FontAwesomeIcons.bug), leading: FaIcon(FontAwesomeIcons.bug),
onTap: null, onTap: null,
), ),
], ]
).toList()
) )
) )
); );

View File

@ -231,9 +231,10 @@ class SubcategoryList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListView.builder( return ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),
separatorBuilder: (_, __) => const Divider(),
itemBuilder: _build, itemCount: _categories.length); itemBuilder: _build, itemCount: _categories.length);
} }
} }
@ -282,9 +283,10 @@ class PartList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListView.builder( return ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),
separatorBuilder: (_, __) => const Divider(height: 1),
itemBuilder: _build, itemCount: _parts.length); itemBuilder: _build, itemCount: _parts.length);
} }
} }

View File

@ -102,7 +102,9 @@ class InvenTreeDrawer extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Drawer( return Drawer(
child: new ListView( child: new ListView(
children: <Widget>[ children: ListTile.divideTiles(
context: context,
tiles: <Widget>[
new ListTile( new ListTile(
leading: new Image.asset( leading: new Image.asset(
"assets/image/icon.png", "assets/image/icon.png",
@ -112,7 +114,6 @@ class InvenTreeDrawer extends StatelessWidget {
title: new Text("InvenTree"), title: new Text("InvenTree"),
onTap: _home, onTap: _home,
), ),
new Divider(),
/* /*
// TODO - Add search functionality! // TODO - Add search functionality!
new ListTile( new ListTile(
@ -122,18 +123,17 @@ class InvenTreeDrawer extends StatelessWidget {
), ),
*/ */
new ListTile( new ListTile(
title: new Text("Scan Barcode"), title: new Text(I18N.of(context).scanBarcode),
onTap: _scan, onTap: _scan,
leading: new FaIcon(FontAwesomeIcons.barcode), leading: new FaIcon(FontAwesomeIcons.barcode),
), ),
new Divider(),
new ListTile( new ListTile(
title: new Text("Parts"), title: new Text(I18N.of(context).parts),
leading: new Icon(Icons.category), leading: new Icon(Icons.category),
onTap: _showParts, onTap: _showParts,
), ),
new ListTile( new ListTile(
title: new Text("Stock"), title: new Text(I18N.of(context).stock),
leading: new FaIcon(FontAwesomeIcons.boxes), leading: new FaIcon(FontAwesomeIcons.boxes),
onTap: _showStock, onTap: _showStock,
), ),
@ -154,13 +154,13 @@ class InvenTreeDrawer extends StatelessWidget {
onTap: _showCustomers, onTap: _showCustomers,
), ),
*/ */
new Divider(),
new ListTile( new ListTile(
title: new Text(I18N.of(context).settings), title: new Text(I18N.of(context).settings),
leading: new Icon(Icons.settings), leading: new Icon(Icons.settings),
onTap: _settings, onTap: _settings,
), ),
] ]
).toList(),
) )
); );
} }

View File

@ -156,7 +156,10 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
); );
case 1: case 1:
return ListView( return ListView(
children: actionTiles(), children: ListTile.divideTiles(
context: context,
tiles: actionTiles()
).toList()
); );
default: default:
return null; return null;
@ -298,10 +301,11 @@ class SublocationList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListView.builder( return ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),
itemBuilder: _build, itemBuilder: _build,
separatorBuilder: (_, __) => const Divider(),
itemCount: _locations.length itemCount: _locations.length
); );
} }
@ -342,9 +346,10 @@ class StockList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListView.builder( return ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),
separatorBuilder: (_, __) => const Divider(),
itemBuilder: _build, itemCount: _items.length); itemBuilder: _build, itemCount: _items.length);
} }
} }

View File

@ -82,6 +82,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
void _showStock(BuildContext context) async { void _showStock(BuildContext context) async {
await part.getStockItems(context); await part.getStockItems(context);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => PartStockDetailWidget(part)) MaterialPageRoute(builder: (context) => PartStockDetailWidget(part))
@ -349,13 +350,19 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
case 0: case 0:
return Center( return Center(
child: ListView( child: ListView(
children: partTiles(), children: ListTile.divideTiles(
context: context,
tiles: partTiles()
).toList()
), ),
); );
case 1: case 1:
return Center( return Center(
child: ListView( child: ListView(
children: actionTiles(), children: ListTile.divideTiles(
context: context,
tiles: actionTiles()
).toList()
) )
); );
default: default:

View File

@ -100,10 +100,11 @@ class PartStockList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListView.builder( return ListView.separated(
shrinkWrap: true, shrinkWrap: true,
physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),
itemBuilder: _build, itemBuilder: _build,
separatorBuilder: (_, __) => const Divider(height: 1),
itemCount: _items.length itemCount: _items.length
); );
} }

View File

@ -579,11 +579,17 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
switch (index) { switch (index) {
case 0: case 0:
return ListView( return ListView(
children: detailTiles(), children: ListTile.divideTiles(
context: context,
tiles: detailTiles()
).toList(),
); );
case 1: case 1:
return ListView( return ListView(
children: actionTiles(), children: ListTile.divideTiles(
context: context,
tiles: actionTiles()
).toList()
); );
default: default:
return null; return null;

View File

@ -250,7 +250,10 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
@override @override
Widget getBody(BuildContext context) { Widget getBody(BuildContext context) {
return ListView( return ListView(
children: resultsList(), children: ListTile.divideTiles(
context: context,
tiles: resultsList()
).toList()
); );
} }