2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-13 10:45:29 +00:00

More linting work

This commit is contained in:
Oliver
2021-09-28 20:24:55 +10:00
parent c1152ee286
commit ad0cc36540
50 changed files with 904 additions and 907 deletions

View File

@ -1,27 +1,27 @@
import 'package:inventree/api.dart';
import 'package:inventree/app_colors.dart';
import 'package:inventree/app_settings.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:inventree/widget/progress.dart';
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/app_settings.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/widget/progress.dart";
import 'package:inventree/l10.dart';
import "package:inventree/l10.dart";
import 'package:inventree/widget/part_detail.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/paginator.dart';
import "package:inventree/widget/part_detail.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/paginator.dart";
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/foundation.dart";
import "package:flutter/material.dart";
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:infinite_scroll_pagination/infinite_scroll_pagination.dart";
class CategoryDisplayWidget extends StatefulWidget {
CategoryDisplayWidget(this.category, {Key? key}) : super(key: key);
const CategoryDisplayWidget(this.category, {Key? key}) : super(key: key);
final InvenTreePartCategory? category;
@ -41,7 +41,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
List<Widget> actions = [];
if ((category != null) && InvenTreeAPI().checkPermission('part_category', 'change')) {
if ((category != null) && InvenTreeAPI().checkPermission("part_category", "change")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),
@ -278,7 +278,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
getCategoryDescriptionCard(extra: false),
];
if (InvenTreeAPI().checkPermission('part', 'add')) {
if (InvenTreeAPI().checkPermission("part", "add")) {
tiles.add(
ListTile(
title: Text(L10().categoryCreate),
@ -331,7 +331,9 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
);
case 1:
return PaginatedPartList(
{"category": "${category?.pk ?? null}"},
{
"category": "${category?.pk ?? 'null'}"
},
);
case 2:
return ListView(
@ -350,7 +352,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
class SubcategoryList extends StatelessWidget {
final List<InvenTreePartCategory> _categories;
SubcategoryList(this._categories);
const SubcategoryList(this._categories);
void _openCategory(BuildContext context, int pk) {

View File

@ -1,18 +1,18 @@
import 'package:inventree/api.dart';
import 'package:inventree/app_colors.dart';
import 'package:inventree/inventree/company.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/l10.dart';
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/l10.dart";
class CompanyDetailWidget extends StatefulWidget {
final InvenTreeCompany company;
CompanyDetailWidget(this.company, {Key? key}) : super(key: key);
const CompanyDetailWidget(this.company, {Key? key}) : super(key: key);
@override
_CompanyDetailState createState() => _CompanyDetailState(company);
@ -62,7 +62,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
await company.reload();
}
void editCompany(BuildContext context) async {
Future <void> editCompany(BuildContext context) async {
company.editForm(
context,

View File

@ -1,16 +1,16 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:infinite_scroll_pagination/infinite_scroll_pagination.dart";
import 'package:inventree/api.dart';
import 'package:inventree/inventree/company.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:inventree/widget/paginator.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/company_detail.dart';
import "package:inventree/api.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/widget/paginator.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/company_detail.dart";
import '../l10.dart';
import "package:inventree/l10.dart";
class CompanyListWidget extends StatefulWidget {

View File

@ -1,12 +1,12 @@
import 'package:inventree/app_settings.dart';
import 'package:inventree/widget/snacks.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/l10.dart';
import 'package:one_context/one_context.dart';
import "package:inventree/app_settings.dart";
import "package:inventree/widget/snacks.dart";
import "package:audioplayers/audioplayers.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/l10.dart";
import "package:one_context/one_context.dart";
Future<void> confirmationDialog(String title, String text, {String? acceptText, String? rejectText, Function? onAccept, Function? onReject}) async {

View File

@ -1,21 +1,21 @@
import 'package:inventree/api.dart';
import 'package:inventree/barcode.dart';
import 'package:inventree/widget/company_list.dart';
import 'package:inventree/widget/search.dart';
import 'package:flutter/material.dart';
import 'package:inventree/l10.dart';
import "package:inventree/api.dart";
import "package:inventree/barcode.dart";
import "package:inventree/widget/company_list.dart";
import "package:inventree/widget/search.dart";
import "package:flutter/material.dart";
import "package:inventree/l10.dart";
import 'package:inventree/widget/category_display.dart';
import 'package:inventree/widget/location_display.dart';
import "package:inventree/widget/category_display.dart";
import "package:inventree/widget/location_display.dart";
import 'package:inventree/settings/settings.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import "package:inventree/settings/settings.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
class InvenTreeDrawer extends StatelessWidget {
final BuildContext context;
InvenTreeDrawer(this.context);
const InvenTreeDrawer(this.context);
void _closeDrawer() {
// Close the drawer
@ -50,7 +50,7 @@ class InvenTreeDrawer extends StatelessWidget {
* Launch the camera to scan a QR code.
* Upon successful scan, data are passed off to be decoded.
*/
void _scan() async {
Future <void> _scan() async {
if (!InvenTreeAPI().checkConnection(context)) return;
_closeDrawer();

View File

@ -1,15 +1,13 @@
import "dart:async";
import "dart:io";
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:image_picker/image_picker.dart';
import 'package:inventree/l10.dart';
import 'dart:async';
import 'dart:io';
import 'package:one_context/one_context.dart';
import "package:file_picker/file_picker.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:image_picker/image_picker.dart";
import "package:one_context/one_context.dart";
import "package:inventree/l10.dart";
class FilePickerDialog {
@ -167,7 +165,7 @@ class CheckBoxField extends FormField<bool> {
class StringField extends TextFormField {
StringField({String label = "", String? hint, String? initial, Function(String?)? onSaved, Function? validator, bool allowEmpty = false, bool isEnabled = true}) :
StringField({String label = "", String? hint, String? initial, Function(String?)? onSaved, Function(String?)? validator, bool allowEmpty = false, bool isEnabled = true}) :
super(
decoration: InputDecoration(
labelText: allowEmpty ? label : label + "*",
@ -182,7 +180,7 @@ class StringField extends TextFormField {
}
if (validator != null) {
return validator(value);
return validator(value) as String?;
}
return null;

View File

@ -1,29 +1,29 @@
import 'package:inventree/app_colors.dart';
import 'package:inventree/user_profile.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import "package:inventree/app_colors.dart";
import "package:inventree/user_profile.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import 'package:inventree/l10.dart';
import "package:inventree/l10.dart";
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import 'package:inventree/barcode.dart';
import 'package:inventree/api.dart';
import "package:inventree/barcode.dart";
import "package:inventree/api.dart";
import 'package:inventree/settings/login.dart';
import "package:inventree/settings/login.dart";
import 'package:inventree/widget/category_display.dart';
import 'package:inventree/widget/company_list.dart';
import 'package:inventree/widget/location_display.dart';
import 'package:inventree/widget/purchase_order_list.dart';
import 'package:inventree/widget/search.dart';
import 'package:inventree/widget/snacks.dart';
import 'package:inventree/widget/spinner.dart';
import 'package:inventree/widget/drawer.dart';
import "package:inventree/widget/category_display.dart";
import "package:inventree/widget/company_list.dart";
import "package:inventree/widget/location_display.dart";
import "package:inventree/widget/purchase_order_list.dart";
import "package:inventree/widget/search.dart";
import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/spinner.dart";
import "package:inventree/widget/drawer.dart";
class InvenTreeHomePage extends StatefulWidget {
InvenTreeHomePage({Key? key}) : super(key: key);
const InvenTreeHomePage({Key? key}) : super(key: key);
@override
_InvenTreeHomePageState createState() => _InvenTreeHomePageState();
@ -125,7 +125,7 @@ class _InvenTreeHomePageState extends State<InvenTreeHomePage> {
});
}
void _loadProfile() async {
Future <void> _loadProfile() async {
_profile = await UserProfileDBManager().getSelectedProfile();

View File

@ -1,21 +1,21 @@
import 'package:inventree/api.dart';
import 'package:inventree/app_colors.dart';
import 'package:inventree/app_settings.dart';
import 'package:inventree/barcode.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:inventree/inventree/stock.dart';
import 'package:inventree/widget/progress.dart';
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/app_settings.dart";
import "package:inventree/barcode.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/widget/progress.dart";
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/stock_detail.dart';
import 'package:inventree/widget/paginator.dart';
import 'package:inventree/l10.dart';
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/stock_detail.dart";
import "package:inventree/widget/paginator.dart";
import "package:inventree/l10.dart";
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:flutter/foundation.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:infinite_scroll_pagination/infinite_scroll_pagination.dart";
class LocationDisplayWidget extends StatefulWidget {
@ -62,7 +62,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
);
*/
if ((location != null) && (InvenTreeAPI().checkPermission('stock_location', 'change'))) {
if ((location != null) && (InvenTreeAPI().checkPermission("stock_location", "change"))) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),
@ -96,7 +96,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
List<InvenTreeStockLocation> _sublocations = [];
String _locationFilter = '';
String _locationFilter = "";
List<InvenTreeStockLocation> get sublocations {
@ -340,7 +340,7 @@ List<Widget> detailTiles() {
tiles.add(locationDescriptionCard(includeActions: false));
if (InvenTreeAPI().checkPermission('stock', 'add')) {
if (InvenTreeAPI().checkPermission("stock", "add")) {
tiles.add(
ListTile(
@ -368,7 +368,7 @@ List<Widget> detailTiles() {
if (location != null) {
// Stock adjustment actions
if (InvenTreeAPI().checkPermission('stock', 'change')) {
if (InvenTreeAPI().checkPermission("stock", "change")) {
// Scan items into location
tiles.add(
ListTile(
@ -430,7 +430,7 @@ List<Widget> detailTiles() {
class SublocationList extends StatelessWidget {
final List<InvenTreeStockLocation> _locations;
SublocationList(this._locations);
const SublocationList(this._locations);
void _openLocation(BuildContext context, int pk) {
@ -446,7 +446,7 @@ class SublocationList extends StatelessWidget {
InvenTreeStockLocation loc = _locations[index];
return ListTile(
title: Text('${loc.name}'),
title: Text("${loc.name}"),
subtitle: Text("${loc.description}"),
trailing: Text("${loc.itemcount}"),
onTap: () {
@ -477,7 +477,7 @@ class PaginatedStockList extends StatefulWidget {
final Map<String, String> filters;
PaginatedStockList(this.filters);
const PaginatedStockList(this.filters);
@override
_PaginatedStockListState createState() => _PaginatedStockListState(filters);
@ -516,7 +516,7 @@ class _PaginatedStockListState extends State<PaginatedStockList> {
Future<void> _fetchPage(int pageKey) async {
try {
Map<String, String> params = this.filters;
Map<String, String> params = filters;
params["search"] = "${_searchTerm}";

View File

@ -1,8 +1,6 @@
// Pagination related widgets
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/l10.dart';
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/l10.dart";
class PaginatedSearchWidget extends StatelessWidget {
@ -44,9 +42,9 @@ class PaginatedSearchWidget extends StatelessWidget {
class NoResultsWidget extends StatelessWidget {
final String description;
const NoResultsWidget(this.description);
NoResultsWidget(this.description);
final String description;
@override
Widget build(BuildContext context) {

View File

@ -1,23 +1,19 @@
import "dart:io";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/fields.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:image_picker/image_picker.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/widget/fields.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/snacks.dart';
import 'dart:io';
import '../api.dart';
import '../l10.dart';
import "package:inventree/api.dart";
import "package:inventree/l10.dart";
class PartAttachmentsWidget extends StatefulWidget {
PartAttachmentsWidget(this.part, {Key? key}) : super(key: key);
const PartAttachmentsWidget(this.part, {Key? key}) : super(key: key);
final InvenTreePart part;
@ -42,7 +38,7 @@ class _PartAttachmentDisplayState extends RefreshableState<PartAttachmentsWidget
List<Widget> actions = [];
if (InvenTreeAPI().checkPermission('part', 'change')) {
if (InvenTreeAPI().checkPermission("part", "change")) {
// File upload
actions.add(

View File

@ -1,28 +1,28 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/app_colors.dart';
import 'package:inventree/inventree/stock.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/foundation.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/inventree/stock.dart";
import 'package:inventree/l10.dart';
import 'package:inventree/widget/part_attachments_widget.dart';
import 'package:inventree/widget/part_notes.dart';
import 'package:inventree/widget/progress.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/widget/category_display.dart';
import 'package:inventree/api.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/part_image_widget.dart';
import 'package:inventree/widget/stock_detail.dart';
import "package:inventree/l10.dart";
import "package:inventree/widget/part_attachments_widget.dart";
import "package:inventree/widget/part_notes.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/category_display.dart";
import "package:inventree/api.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/part_image_widget.dart";
import "package:inventree/widget/stock_detail.dart";
import 'location_display.dart';
import "pcakage:inventree/widget/location_display.dart";
class PartDetailWidget extends StatefulWidget {
PartDetailWidget(this.part, {Key? key}) : super(key: key);
const PartDetailWidget(this.part, {Key? key}) : super(key: key);
final InvenTreePart part;
@ -46,7 +46,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
List<Widget> actions = [];
if (InvenTreeAPI().checkPermission('part', 'view')) {
if (InvenTreeAPI().checkPermission("part", "view")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.globe),
@ -55,7 +55,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
);
}
if (InvenTreeAPI().checkPermission('part', 'change')) {
if (InvenTreeAPI().checkPermission("part", "change")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),
@ -89,9 +89,9 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
await part.getTestTemplates();
}
void _toggleStar() async {
Future <void> _toggleStar() async {
if (InvenTreeAPI().checkPermission('part', 'view')) {
if (InvenTreeAPI().checkPermission("part", "view")) {
await part.update(values: {"starred": "${!part.starred}"});
refresh();
}
@ -327,7 +327,8 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
}
// TODO - Add request tests?
if (false && part.isTrackable) {
/*
if (part.isTrackable) {
tiles.add(ListTile(
title: Text(L10().testsRequired),
leading: FaIcon(FontAwesomeIcons.tasks),
@ -336,6 +337,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
)
);
}
*/
// Notes field
tiles.add(
@ -453,7 +455,7 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
);
}
if (false && !part.isActive && InvenTreeAPI().checkPermission('part', 'delete')) {
if (false && !part.isActive && InvenTreeAPI().checkPermission("part", "delete")) {
tiles.add(
ListTile(
title: Text(L10().deletePart),

View File

@ -1,23 +1,21 @@
import 'dart:io';
import "dart:io";
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/foundation.dart";
import "package:flutter/material.dart";
import 'package:inventree/api.dart';
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/widget/fields.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/snacks.dart';
import '../l10.dart';
import "package:inventree/api.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/fields.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
import "package:inventree/l10.dart";
class PartImageWidget extends StatefulWidget {
PartImageWidget(this.part, {Key? key}) : super(key: key);
const PartImageWidget(this.part, {Key? key}) : super(key: key);
final InvenTreePart part;
@ -46,7 +44,7 @@ class _PartImageState extends RefreshableState<PartImageWidget> {
List<Widget> actions = [];
if (InvenTreeAPI().checkPermission('part', 'change')) {
if (InvenTreeAPI().checkPermission("part", "change")) {
// File upload
actions.add(

View File

@ -1,18 +1,18 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/api.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:inventree/l10.dart';
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/api.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:flutter/cupertino.dart";
import "package:flutter_markdown/flutter_markdown.dart";
import "package:inventree/l10.dart";
class PartNotesWidget extends StatefulWidget {
final InvenTreePart part;
PartNotesWidget(this.part, {Key? key}) : super(key: key);
const PartNotesWidget(this.part, {Key? key}) : super(key: key);
@override
_PartNotesState createState() => _PartNotesState(part);
@ -38,7 +38,7 @@ class _PartNotesState extends RefreshableState<PartNotesWidget> {
List<Widget> actions = [];
if (InvenTreeAPI().checkPermission('part', 'change')) {
if (InvenTreeAPI().checkPermission("part", "change")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),

View File

@ -1,19 +1,19 @@
import 'package:inventree/l10.dart';
import "dart:core";
import 'package:inventree/api.dart';
import "package:inventree/l10.dart";
import 'dart:core';
import "package:inventree/api.dart";
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/inventree/company.dart';
import 'package:inventree/widget/company_detail.dart';
import 'package:inventree/widget/refreshable_state.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/widget/company_detail.dart";
import "package:inventree/widget/refreshable_state.dart";
class PartSupplierWidget extends StatefulWidget {
PartSupplierWidget(this.part, {Key? key}) : super(key: key);
const PartSupplierWidget(this.part, {Key? key}) : super(key: key);
final InvenTreePart part;

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import "package:flutter/material.dart";
/*
* Construct a circular progress indicator

View File

@ -1,21 +1,20 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/api.dart';
import 'package:inventree/app_colors.dart';
import 'package:inventree/inventree/company.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/inventree/purchase_order.dart';
import 'package:inventree/widget/company_detail.dart';
import 'package:inventree/widget/refreshable_state.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import '../l10.dart';
import 'location_display.dart';
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/purchase_order.dart";
import "package:inventree/widget/company_detail.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/l10.dart";
import "package:inventree/widget/location_display.dart";
class PurchaseOrderDetailWidget extends StatefulWidget {
PurchaseOrderDetailWidget(this.order, {Key? key}): super(key: key);
const PurchaseOrderDetailWidget(this.order, {Key? key}): super(key: key);
final InvenTreePurchaseOrder order;
@ -72,7 +71,7 @@ class _PurchaseOrderDetailState extends RefreshableState<PurchaseOrderDetailWidg
}
void editOrder(BuildContext context) async {
Future <void> editOrder(BuildContext context) async {
order.editForm(
context,

View File

@ -1,23 +1,22 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import 'package:inventree/inventree/company.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:inventree/widget/paginator.dart';
import 'package:inventree/widget/purchase_order_detail.dart';
import 'package:inventree/widget/refreshable_state.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:infinite_scroll_pagination/infinite_scroll_pagination.dart";
import '../l10.dart';
import 'package:inventree/api.dart';
import 'package:inventree/inventree/purchase_order.dart';
import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/widget/paginator.dart";
import "package:inventree/widget/purchase_order_detail.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/l10.dart";
import "package:inventree/api.dart";
import "package:inventree/inventree/purchase_order.dart";
/*
* Widget class for displaying a list of Purchase Orders
*/
class PurchaseOrderListWidget extends StatefulWidget {
PurchaseOrderListWidget({this.filters = const {}, Key? key}) : super(key: key);
const PurchaseOrderListWidget({this.filters = const {}, Key? key}) : super(key: key);
final Map<String, String> filters;
@ -100,7 +99,7 @@ class _PaginatedPurchaseOrderListState extends State<_PaginatedPurchaseOrderList
// Copy across provided filters
for (String key in filters.keys) {
params[key] = filters[key] ?? '';
params[key] = filters[key] ?? "";
}
final page = await InvenTreePurchaseOrder().listPaginated(

View File

@ -1,7 +1,7 @@
import 'package:inventree/widget/drawer.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import "package:inventree/widget/drawer.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:flutter/widgets.dart";
abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
@ -32,6 +32,7 @@ abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
String getAppBarTitle(BuildContext context) { return "App Bar Title"; }
@override
void initState() {
super.initState();
WidgetsBinding.instance?.addPostFrameCallback((_) => onBuild(_context!));

View File

@ -1,17 +1,17 @@
import 'package:inventree/widget/part_detail.dart';
import 'package:inventree/widget/progress.dart';
import 'package:inventree/widget/snacks.dart';
import 'package:inventree/widget/stock_detail.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/l10.dart';
import "package:inventree/widget/part_detail.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/stock_detail.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/l10.dart";
import 'package:inventree/inventree/part.dart';
import 'package:inventree/inventree/stock.dart';
import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/stock.dart";
import '../api.dart';
import "package:inventree/api.dart";
// TODO - Refactor duplicate code in this file!
@ -101,7 +101,7 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart?> {
IconButton(
icon: FaIcon(FontAwesomeIcons.backspace),
onPressed: () {
query = '';
query = "";
search(context);
},
),
@ -119,7 +119,7 @@ class PartSearchDelegate extends SearchDelegate<InvenTreePart?> {
return IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
this.close(context, null);
close(context, null);
}
);
}
@ -289,7 +289,7 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem?> {
IconButton(
icon: FaIcon(FontAwesomeIcons.backspace),
onPressed: () {
query = '';
query = "";
search(context);
},
),
@ -307,7 +307,7 @@ class StockSearchDelegate extends SearchDelegate<InvenTreeStockItem?> {
return IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
this.close(context, null);
close(context, null);
}
);
}

View File

@ -8,11 +8,11 @@
* | Text <icon> |
*/
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:one_context/one_context.dart';
import 'package:inventree/l10.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:one_context/one_context.dart";
import "package:inventree/l10.dart";
void showSnackIcon(String text, {IconData? icon, Function()? onAction, bool? success, String? actionText}) {

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import "package:flutter/material.dart";
import "package:flutter/cupertino.dart";
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/app_colors.dart';
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/app_colors.dart";
class Spinner extends StatefulWidget {
final IconData? icon;

View File

@ -1,20 +1,18 @@
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/part_detail.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:inventree/l10.dart";
import 'package:inventree/inventree/part.dart';
import 'package:inventree/widget/part_detail.dart';
import 'package:inventree/widget/progress.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:inventree/l10.dart';
import '../api.dart';
import "package:inventree/api.dart";
class StarredPartWidget extends StatefulWidget {
StarredPartWidget({Key? key}) : super(key: key);
const StarredPartWidget({Key? key}) : super(key: key);
@override
_StarredPartState createState() => _StarredPartState();

View File

@ -1,30 +1,30 @@
import 'package:inventree/app_colors.dart';
import 'package:inventree/barcode.dart';
import 'package:inventree/inventree/model.dart';
import 'package:inventree/inventree/stock.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/widget/dialogs.dart';
import 'package:inventree/widget/fields.dart';
import 'package:inventree/widget/location_display.dart';
import 'package:inventree/widget/part_detail.dart';
import 'package:inventree/widget/progress.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:inventree/widget/snacks.dart';
import 'package:inventree/widget/stock_item_test_results.dart';
import 'package:inventree/widget/stock_notes.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import "package:inventree/app_colors.dart";
import "package:inventree/barcode.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/widget/dialogs.dart";
import "package:inventree/widget/fields.dart";
import "package:inventree/widget/location_display.dart";
import "package:inventree/widget/part_detail.dart";
import "package:inventree/widget/progress.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/stock_item_test_results.dart";
import "package:inventree/widget/stock_notes.dart";
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import 'package:inventree/l10.dart';
import "package:inventree/l10.dart";
import 'package:inventree/api.dart';
import "package:inventree/api.dart";
import 'package:dropdown_search/dropdown_search.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import "package:dropdown_search/dropdown_search.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
class StockDetailWidget extends StatefulWidget {
StockDetailWidget(this.item, {Key? key}) : super(key: key);
const StockDetailWidget(this.item, {Key? key}) : super(key: key);
final InvenTreeStockItem item;
@ -53,7 +53,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
List<Widget> actions = [];
if (InvenTreeAPI().checkPermission('stock', 'view')) {
if (InvenTreeAPI().checkPermission("stock", "view")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.globe),
@ -62,7 +62,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
);
}
if (InvenTreeAPI().checkPermission('stock', 'change')) {
if (InvenTreeAPI().checkPermission("stock", "change")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),
@ -99,13 +99,13 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
await item.reload();
// Request part information
part = await InvenTreePart().get(item.partId) as InvenTreePart;
part = await InvenTreePart().get(item.partId) as InvenTreePart?;
// Request test results...
await item.getTestResults();
}
void _editStockItem(BuildContext context) async {
Future <void> _editStockItem(BuildContext context) async {
var fields = InvenTreeStockItem().formFields();
@ -125,7 +125,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
void _addStock() async {
Future <void> _addStock() async {
double quantity = double.parse(_quantityController.text);
_quantityController.clear();
@ -138,7 +138,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
refresh();
}
void _addStockDialog() async {
Future <void> _addStockDialog() async {
_quantityController.clear();
_notesController.clear();
@ -171,7 +171,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
}
void _removeStock() async {
Future <void> _removeStock() async {
double quantity = double.parse(_quantityController.text);
_quantityController.clear();
@ -211,7 +211,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
);
}
void _countStock() async {
Future <void> _countStock() async {
double quantity = double.parse(_quantityController.text);
_quantityController.clear();
@ -223,7 +223,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
refresh();
}
void _countStockDialog() async {
Future <void> _countStockDialog() async {
_quantityController.text = item.quantity.toString();
_notesController.clear();
@ -251,9 +251,9 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
void _unassignBarcode(BuildContext context) async {
Future<void> _unassignBarcode(BuildContext context) async {
final bool result = await item.update(values: {'uid': ''});
final bool result = await item.update(values: {"uid": ""});
if (result) {
showSnackIcon(
@ -271,7 +271,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
void _transferStock(int locationId) async {
Future <void> _transferStock(int locationId) async {
double quantity = double.tryParse(_quantityController.text) ?? item.quantity;
String notes = _notesController.text;
@ -288,7 +288,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
}
}
void _transferStockDialog(BuildContext context) async {
Future <void> _transferStockDialog(BuildContext context) async {
int? location_pk;
@ -349,13 +349,13 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
hint: L10().searchLocation,
onChanged: null,
itemAsString: (dynamic location) {
return (location['pathstring'] ?? '') as String;
return (location["pathstring"] ?? "") as String;
},
onSaved: (dynamic location) {
if (location == null) {
location_pk = null;
} else {
location_pk = location['pk'] as int;
location_pk = location["pk"] as int;
}
},
isFilteredOnline: true,
@ -503,7 +503,8 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
// Supplier part?
// TODO: Display supplier part info page?
if (false && item.supplierPartId > 0) {
/*
if (item.supplierPartId > 0) {
tiles.add(
ListTile(
title: Text("${item.supplierName}"),
@ -514,6 +515,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
)
);
}
*/
if (item.link.isNotEmpty) {
tiles.add(
@ -559,7 +561,8 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
// TODO - Is this stock item linked to a PurchaseOrder?
// TODO - Re-enable stock item history display
if (false && item.trackingItemCount > 0) {
/*
if (item.trackingItemCount > 0) {
tiles.add(
ListTile(
title: Text(L10().history),
@ -574,6 +577,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
)
);
}
*/
// Notes field
tiles.add(
@ -600,7 +604,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
tiles.add(headerTile());
// First check that the user has the required permissions to adjust stock
if (!InvenTreeAPI().checkPermission('stock', 'change')) {
if (!InvenTreeAPI().checkPermission("stock", "change")) {
tiles.add(
ListTile(
title: Text(L10().permissionRequired),
@ -710,12 +714,11 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
items: <BottomNavigationBarItem> [
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.infoCircle),
title: Text(L10().details),
label: L10().details,
),
BottomNavigationBarItem(
icon: FaIcon(FontAwesomeIcons.wrench),
title: Text(L10().actions),
),
label: L10().actions, ),
]
);
}

View File

@ -1,27 +1,21 @@
import 'package:inventree/api_form.dart';
import 'package:inventree/app_colors.dart';
import 'package:inventree/inventree/part.dart';
import 'package:inventree/inventree/stock.dart';
import 'package:inventree/inventree/model.dart';
import 'package:inventree/api.dart';
import 'package:inventree/widget/dialogs.dart';
import 'package:inventree/widget/fields.dart';
import 'package:inventree/widget/progress.dart';
import 'package:inventree/widget/snacks.dart';
import "package:inventree/app_colors.dart";
import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/api.dart";
import "package:inventree/widget/progress.dart";
import 'package:inventree/l10.dart';
import "package:inventree/l10.dart";
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
class StockItemTestResultsWidget extends StatefulWidget {
StockItemTestResultsWidget(this.item, {Key? key}) : super(key: key);
const StockItemTestResultsWidget(this.item, {Key? key}) : super(key: key);
final InvenTreeStockItem item;
@ -32,8 +26,6 @@ class StockItemTestResultsWidget extends StatefulWidget {
class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestResultsWidget> {
final _addResultKey = GlobalKey<FormState>();
@override
String getAppBarTitle(BuildContext context) => L10().testResults;
@ -59,7 +51,7 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
_StockItemTestResultDisplayState(this.item);
void addTestResult(BuildContext context, {String name = '', bool nameIsEditable = true, bool result = false, String value = '', bool valueRequired = false, bool attachmentRequired = false}) async {
Future <void> addTestResult(BuildContext context, {String name = "", bool nameIsEditable = true, bool result = false, String value = "", bool valueRequired = false, bool attachmentRequired = false}) async {
InvenTreeStockItemTestResult().createForm(
context,
@ -165,7 +157,6 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
String _test = "";
bool _result = false;
String _value = "";
String _notes = "";
FaIcon _icon = FaIcon(FontAwesomeIcons.questionCircle, color: COLOR_BLUE);
bool _valueRequired = false;
@ -175,8 +166,7 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
_result = item.passFailStatus();
_test = item.testName;
_required = item.required;
_value = item.latestResult()?.value ?? '';
_notes = item.latestResult()?.notes ?? '';
_value = item.latestResult()?.value ?? "";
_valueRequired = item.requiresValue;
_attachmentRequired = item.requiresAttachment;
} else if (item is InvenTreeStockItemTestResult) {
@ -184,7 +174,6 @@ class _StockItemTestResultDisplayState extends RefreshableState<StockItemTestRes
_test = item.testName;
_required = false;
_value = item.value;
_notes = item.notes;
}
if (_result == true) {

View File

@ -1,20 +1,20 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/inventree/stock.dart';
import 'package:inventree/widget/refreshable_state.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:inventree/l10.dart';
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/inventree/stock.dart";
import "package:inventree/widget/refreshable_state.dart";
import "package:flutter/cupertino.dart";
import "package:flutter_markdown/flutter_markdown.dart";
import "package:inventree/l10.dart";
import '../api.dart';
import "package:inventree/api.dart";
class StockNotesWidget extends StatefulWidget {
final InvenTreeStockItem item;
StockNotesWidget(this.item, {Key? key}) : super(key: key);
const StockNotesWidget(this.item, {Key? key}) : super(key: key);
@override
_StockNotesState createState() => _StockNotesState(item);
@ -39,7 +39,7 @@ class _StockNotesState extends RefreshableState<StockNotesWidget> {
List<Widget> getAppBarActions(BuildContext context) {
List<Widget> actions = [];
if (InvenTreeAPI().checkPermission('stock', 'change')) {
if (InvenTreeAPI().checkPermission("stock", "change")) {
actions.add(
IconButton(
icon: FaIcon(FontAwesomeIcons.edit),

View File

@ -1,12 +1,10 @@
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:font_awesome_flutter/font_awesome_flutter.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/widget/snacks.dart";
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:inventree/inventree/sentry.dart';
import 'package:inventree/widget/snacks.dart';
import '../l10.dart';
import "package:inventree/l10.dart";
class SubmitFeedbackWidget extends StatefulWidget {
@ -18,7 +16,7 @@ class SubmitFeedbackWidget extends StatefulWidget {
class _SubmitFeedbackState extends State<SubmitFeedbackWidget> {
final _formkey = new GlobalKey<FormState>();
final _formkey = GlobalKey<FormState>();
String message = "";
@ -61,8 +59,6 @@ class _SubmitFeedbackState extends State<SubmitFeedbackWidget> {
key: _formkey,
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextFormField(