2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 13:36:50 +00:00
inventree-app/lib/widget/search.dart
2021-02-01 22:36:46 +11:00

93 lines
2.3 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.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<SearchWidget> {
String _searchText = "";
List<InvenTreePart> _parts = List<InvenTreePart>();
List<InvenTreeStockItem> _stockItems = List<InvenTreeStockItem>();
@override
String getAppBarTitle(BuildContext context) => I18N.of(context).search;
Future<void> _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<void> request(BuildContext context) async {
_search(context);
}
@override
Widget getBody(BuildContext context) {
return Center(
child: ListView(
children: <Widget>[
TextField(
decoration: InputDecoration(
hintText: I18N.of(context).search,
),
onChanged: (String text) {
_searchText = text;
}
),
RaisedButton(
child: Text(I18N.of(context).search),
onPressed: () {
_search(context);
},
),
]
)
);
}
}