import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:InvenTree/widget/refreshable_state.dart'; import 'package:InvenTree/inventree/part.dart'; import 'package:InvenTree/inventree/stock.dart'; class SearchWidget extends StatefulWidget { @override _SearchState createState() => _SearchState(); } class _SearchState extends RefreshableState { String _searchText = ""; List _parts = List(); List _stockItems = List(); @override String getAppBarTitle(BuildContext context) { return "Search"; } Future _search(BuildContext context) { print("Search: $_searchText}"); // Ignore if the search text is empty if (_searchText.isNotEmpty) { // Search for parts InvenTreePart().list(context, filters: {"search": _searchText}).then((var parts) { setState(() { _parts.clear(); for (var part in parts) { if (part is InvenTreePart) { _parts.add(part); } } print("Matched ${_parts.length} parts"); }); }); // Search for stock items InvenTreeStockItem().list(context, filters: {"search": _searchText}).then((var items) { setState(() { _stockItems.clear(); for (var item in items) { if (item is InvenTreeStockItem) { _stockItems.add(item); } } print("Matched ${_stockItems.length} stock items"); }); }); } } @override Future request(BuildContext context) async { _search(context); } @override Widget getBody(BuildContext context) { return Center( child: ListView( children: [ TextField( decoration: InputDecoration( hintText: "Search" ), onChanged: (String text) { _searchText = text; } ), RaisedButton( child: Text("Search"), onPressed: () { _search(context); }, ), ] ) ); } }