From 718f89b339c77e1bd9df89bb76240b4ffc29d7fb Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 3 Apr 2020 11:14:25 +1100 Subject: [PATCH] Add display for part information - Very sparse currently --- lib/inventree/model.dart | 8 ++++- lib/widget/category_display.dart | 32 ++++++++++++++++---- lib/widget/part_display.dart | 51 ++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 lib/widget/part_display.dart diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index c761f543..825f315c 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -75,7 +75,13 @@ class InvenTreeModel { // TODO - Add "timeout" // TODO - Add error catching - var response = await InvenTreeAPI().get(path.join(URL, pk.toString())); + var addr = path.join(URL, pk.toString()); + + if (!addr.endsWith("/")) { + addr += "/"; + } + + var response = await InvenTreeAPI().get(addr); if (response.statusCode != 200) { print("Error retrieving data"); diff --git a/lib/widget/category_display.dart b/lib/widget/category_display.dart index c135aa53..28479dd5 100644 --- a/lib/widget/category_display.dart +++ b/lib/widget/category_display.dart @@ -1,5 +1,6 @@ import 'package:InvenTree/inventree/part.dart'; +import 'package:InvenTree/widget/part_display.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -87,10 +88,15 @@ class _CategoryDisplayState extends State { children: [ Text( "Subcategories - ${_subcategories.length}", + textAlign: TextAlign.left, + style: TextStyle(fontWeight: FontWeight.bold), ), Expanded(child: SubcategoryList(_subcategories)), Divider(), - Text("Parts - ${_parts.length}"), + Text("Parts - ${_parts.length}", + textAlign: TextAlign.left, + style: TextStyle(fontWeight: FontWeight.bold), + ), Expanded(child: PartList(_parts)), Spacer(), ] @@ -114,7 +120,6 @@ class SubcategoryList extends StatelessWidget { // Attempt to load the sub-category. InvenTreePartCategory().get(pk).then((var cat) { if (cat is InvenTreePartCategory) { - print("Found cat: <${cat.pk}> : ${cat.name} - ${cat.description}"); Navigator.push(context, MaterialPageRoute(builder: (context) => CategoryDisplayWidget(cat))); } @@ -157,6 +162,16 @@ class PartList extends StatelessWidget { PartList(this._parts); + void _openPart(BuildContext context, int pk) { + // Attempt to load the part information + InvenTreePart().get(pk).then((var part) { + if (part is InvenTreePart) { + + Navigator.push(context, MaterialPageRoute(builder: (context) => PartDisplayWidget(part))); + } + }); + } + Widget _build(BuildContext context, int index) { InvenTreePart part; @@ -165,10 +180,15 @@ class PartList extends StatelessWidget { } return Card( - child: Column( - children: [ - Text('${part.name} - ${part.description}'), - ] + child: InkWell( + child: Column( + children: [ + Text('${part.name} - ${part.description}'), + ] + ), + onTap: () { + _openPart(context, part.pk); + }, ) ); } diff --git a/lib/widget/part_display.dart b/lib/widget/part_display.dart new file mode 100644 index 00000000..9cf1d51d --- /dev/null +++ b/lib/widget/part_display.dart @@ -0,0 +1,51 @@ + +import 'package:InvenTree/inventree/part.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +class PartDisplayWidget extends StatefulWidget { + + PartDisplayWidget(this.part, {Key key}) : super(key: key); + + final InvenTreePart part; + + @override + _PartDisplayState createState() => _PartDisplayState(part); + +} + + +class _PartDisplayState extends State { + + _PartDisplayState(this.part) { + // TODO + } + + final InvenTreePart part; + + String get _title { + if (part == null) { + return "Part"; + } else { + return "Part '${part.name}'"; + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(_title), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text("Description: ${part.description}"), + ] + ), + ) + ); + } +} \ No newline at end of file