mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-28 13:36:50 +00:00
Code cleanup
This commit is contained in:
parent
2a5bb4631b
commit
d2ce3fadf1
48
lib/api.dart
48
lib/api.dart
@ -14,10 +14,8 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|||||||
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
||||||
import 'package:InvenTree/widget/dialogs.dart';
|
import 'package:InvenTree/widget/dialogs.dart';
|
||||||
import 'package:InvenTree/l10.dart';
|
import 'package:InvenTree/l10.dart';
|
||||||
import 'package:InvenTree/inventree/sentry.dart';
|
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:one_context/one_context.dart';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom FileService for caching network images
|
* Custom FileService for caching network images
|
||||||
@ -26,7 +24,7 @@ import 'package:one_context/one_context.dart';
|
|||||||
*/
|
*/
|
||||||
class InvenTreeFileService extends FileService {
|
class InvenTreeFileService extends FileService {
|
||||||
|
|
||||||
HttpClient? _client = null;
|
HttpClient? _client;
|
||||||
|
|
||||||
InvenTreeFileService({HttpClient? client, bool strictHttps = false}) {
|
InvenTreeFileService({HttpClient? client, bool strictHttps = false}) {
|
||||||
_client = client ?? HttpClient();
|
_client = client ?? HttpClient();
|
||||||
@ -113,7 +111,7 @@ class InvenTreeAPI {
|
|||||||
|
|
||||||
String makeUrl(String endpoint) => _makeUrl(endpoint);
|
String makeUrl(String endpoint) => _makeUrl(endpoint);
|
||||||
|
|
||||||
UserProfile? profile = null;
|
UserProfile? profile;
|
||||||
|
|
||||||
Map<String, dynamic> roles = {};
|
Map<String, dynamic> roles = {};
|
||||||
|
|
||||||
@ -187,8 +185,6 @@ class InvenTreeAPI {
|
|||||||
|
|
||||||
if (profile == null) return false;
|
if (profile == null) return false;
|
||||||
|
|
||||||
var ctx = OneContext().context;
|
|
||||||
|
|
||||||
String address = profile?.server ?? "";
|
String address = profile?.server ?? "";
|
||||||
String username = profile?.username ?? "";
|
String username = profile?.username ?? "";
|
||||||
String password = profile?.password ?? "";
|
String password = profile?.password ?? "";
|
||||||
@ -451,7 +447,7 @@ class InvenTreeAPI {
|
|||||||
} on SocketException catch (error) {
|
} on SocketException catch (error) {
|
||||||
showServerError(L10().connectionRefused, error.toString());
|
showServerError(L10().connectionRefused, error.toString());
|
||||||
return null;
|
return null;
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
@ -468,10 +464,10 @@ class InvenTreeAPI {
|
|||||||
var data = json.encode(_body);
|
var data = json.encode(_body);
|
||||||
|
|
||||||
// Set headers
|
// Set headers
|
||||||
request.headers.set('Accept', 'application/json');
|
request.headers.set(HttpHeaders.acceptHeader, 'application/json');
|
||||||
request.headers.set('Content-type', 'application/json');
|
request.headers.set(HttpHeaders.contentTypeHeader, 'application/json');
|
||||||
request.headers.set('Accept-Language', Intl.getCurrentLocale());
|
request.headers.set(HttpHeaders.acceptLanguageHeader, Intl.getCurrentLocale());
|
||||||
request.headers.set('Content-Length', data.length.toString());
|
request.headers.set(HttpHeaders.contentLengthHeader, data.length.toString());
|
||||||
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
||||||
|
|
||||||
request.add(utf8.encode(data));
|
request.add(utf8.encode(data));
|
||||||
@ -486,7 +482,7 @@ class InvenTreeAPI {
|
|||||||
error.toString()
|
error.toString()
|
||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
@ -594,16 +590,16 @@ class InvenTreeAPI {
|
|||||||
try {
|
try {
|
||||||
request = await client.openUrl("OPTIONS", uri).timeout(Duration(seconds: 10));
|
request = await client.openUrl("OPTIONS", uri).timeout(Duration(seconds: 10));
|
||||||
|
|
||||||
request.headers.set('Accept', 'application/json');
|
request.headers.set(HttpHeaders.acceptHeader, 'application/json');
|
||||||
request.headers.set('Accept-Language', Intl.getCurrentLocale());
|
request.headers.set(HttpHeaders.acceptLanguageHeader, Intl.getCurrentLocale());
|
||||||
request.headers.set('Content-type', 'application/json');
|
request.headers.set(HttpHeaders.contentTypeHeader, 'application/json');
|
||||||
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
||||||
|
|
||||||
response = await request.close().timeout(Duration(seconds: 10));
|
response = await request.close().timeout(Duration(seconds: 10));
|
||||||
} on SocketException catch (error) {
|
} on SocketException catch (error) {
|
||||||
showServerError(L10().connectionRefused, error.toString());
|
showServerError(L10().connectionRefused, error.toString());
|
||||||
return null;
|
return null;
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
@ -647,7 +643,7 @@ class InvenTreeAPI {
|
|||||||
error.toString()
|
error.toString()
|
||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
@ -666,9 +662,10 @@ class InvenTreeAPI {
|
|||||||
|
|
||||||
// Set headers
|
// Set headers
|
||||||
// Ref: https://stackoverflow.com/questions/59713003/body-not-sending-using-map-in-flutter
|
// Ref: https://stackoverflow.com/questions/59713003/body-not-sending-using-map-in-flutter
|
||||||
request.headers.set('Accept', 'application/json');
|
request.headers.set(HttpHeaders.acceptHeader, 'application/json');
|
||||||
request.headers.set('Content-type', 'application/json');
|
request.headers.set(HttpHeaders.contentTypeHeader, 'application/json');
|
||||||
request.headers.set('Content-Length', data.length.toString());
|
request.headers.set(HttpHeaders.acceptLanguageHeader, Intl.getCurrentLocale());
|
||||||
|
request.headers.set(HttpHeaders.contentLengthHeader, data.length.toString());
|
||||||
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
||||||
|
|
||||||
// Add JSON data to the request
|
// Add JSON data to the request
|
||||||
@ -684,7 +681,7 @@ class InvenTreeAPI {
|
|||||||
error.toString()
|
error.toString()
|
||||||
);
|
);
|
||||||
return null;
|
return null;
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
@ -795,13 +792,13 @@ class InvenTreeAPI {
|
|||||||
try {
|
try {
|
||||||
// Open a connection
|
// Open a connection
|
||||||
request = await client.getUrl(uri).timeout(Duration(seconds: 10));
|
request = await client.getUrl(uri).timeout(Duration(seconds: 10));
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} on SocketException catch (error) {
|
} on SocketException catch (error) {
|
||||||
showServerError(L10().connectionRefused, error.toString());
|
showServerError(L10().connectionRefused, error.toString());
|
||||||
return null;
|
return null;
|
||||||
} on Exception catch (error) {
|
} on FormatException {
|
||||||
showServerError(L10().invalidHost, L10().invalidHostDetails);
|
showServerError(L10().invalidHost, L10().invalidHostDetails);
|
||||||
return null;
|
return null;
|
||||||
} catch (error, stackTrace) {
|
} catch (error, stackTrace) {
|
||||||
@ -811,15 +808,16 @@ class InvenTreeAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set connection headers
|
// Set connection headers
|
||||||
|
request.headers.set(HttpHeaders.acceptHeader, 'application/json');
|
||||||
request.headers.set(HttpHeaders.contentTypeHeader, 'application/json');
|
request.headers.set(HttpHeaders.contentTypeHeader, 'application/json');
|
||||||
|
request.headers.set(HttpHeaders.acceptLanguageHeader, Intl.getCurrentLocale());
|
||||||
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
request.headers.set(HttpHeaders.authorizationHeader, _authorizationHeader());
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
HttpClientResponse response = await request.close().timeout(Duration(seconds: 10));
|
HttpClientResponse response = await request.close().timeout(Duration(seconds: 10));
|
||||||
return response;
|
return response;
|
||||||
|
|
||||||
} on TimeoutException catch (error) {
|
} on TimeoutException {
|
||||||
showTimeoutError();
|
showTimeoutError();
|
||||||
return null;
|
return null;
|
||||||
} on SocketException catch (error) {
|
} on SocketException catch (error) {
|
||||||
|
@ -246,8 +246,6 @@ class BarcodeScanHandler extends BarcodeHandler {
|
|||||||
success: false,
|
success: false,
|
||||||
onAction: () {
|
onAction: () {
|
||||||
|
|
||||||
var _ctx = OneContext().context;
|
|
||||||
|
|
||||||
OneContext().showDialog(
|
OneContext().showDialog(
|
||||||
builder: (BuildContext context) => SimpleDialog(
|
builder: (BuildContext context) => SimpleDialog(
|
||||||
title: Text(L10().unknownResponse),
|
title: Text(L10().unknownResponse),
|
||||||
|
@ -1,18 +1,10 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:InvenTree/api.dart';
|
import 'package:InvenTree/api.dart';
|
||||||
import 'package:InvenTree/widget/dialogs.dart';
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:one_context/one_context.dart';
|
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
// import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
|
|
||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
|
|
||||||
|
|
||||||
// Paginated response object
|
// Paginated response object
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:InvenTree/api.dart';
|
import 'package:InvenTree/api.dart';
|
||||||
import 'package:InvenTree/inventree/stock.dart';
|
import 'package:InvenTree/inventree/stock.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:InvenTree/l10.dart';
|
||||||
|
|
||||||
import 'model.dart';
|
import 'model.dart';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:path/path.dart' as path;
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
class InvenTreePartCategory extends InvenTreeModel {
|
class InvenTreePartCategory extends InvenTreeModel {
|
||||||
@ -42,7 +38,7 @@ class InvenTreePartCategory extends InvenTreeModel {
|
|||||||
String p = psplit.join("/");
|
String p = psplit.join("/");
|
||||||
|
|
||||||
if (p.isEmpty) {
|
if (p.isEmpty) {
|
||||||
p = "Top level part category";
|
p = L10().partCategoryTopLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
|
@ -35,8 +35,7 @@ class InvenTreeStockItemTestResult extends InvenTreeModel {
|
|||||||
|
|
||||||
InvenTreeStockItemTestResult() : super();
|
InvenTreeStockItemTestResult() : super();
|
||||||
|
|
||||||
InvenTreeStockItemTestResult.fromJson(Map<String, dynamic> json) : super.fromJson(json) {
|
InvenTreeStockItemTestResult.fromJson(Map<String, dynamic> json) : super.fromJson(json);
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
InvenTreeStockItemTestResult createFromJson(Map<String, dynamic> json) {
|
InvenTreeStockItemTestResult createFromJson(Map<String, dynamic> json) {
|
||||||
@ -388,9 +387,8 @@ class InvenTreeStockItem extends InvenTreeModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String get locationPathString {
|
String get locationPathString {
|
||||||
String path = '';
|
|
||||||
|
|
||||||
if (locationId == -1 || !jsondata.containsKey('location_detail')) return 'No location specified';
|
if (locationId == -1 || !jsondata.containsKey('location_detail')) return L10().locationNotSet;
|
||||||
|
|
||||||
return jsondata['location_detail']['pathstring'] ?? '';
|
return jsondata['location_detail']['pathstring'] ?? '';
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,7 @@ class _InvenTreeAppSettingsState extends State<InvenTreeAppSettingsWidget> {
|
|||||||
|
|
||||||
final GlobalKey<_InvenTreeAppSettingsState> _settingsKey = GlobalKey<_InvenTreeAppSettingsState>();
|
final GlobalKey<_InvenTreeAppSettingsState> _settingsKey = GlobalKey<_InvenTreeAppSettingsState>();
|
||||||
|
|
||||||
_InvenTreeAppSettingsState() {
|
_InvenTreeAppSettingsState();
|
||||||
}
|
|
||||||
|
|
||||||
bool barcodeSounds = true;
|
bool barcodeSounds = true;
|
||||||
bool serverSounds = true;
|
bool serverSounds = true;
|
||||||
|
@ -8,7 +8,6 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|||||||
import 'package:InvenTree/l10.dart';
|
import 'package:InvenTree/l10.dart';
|
||||||
|
|
||||||
import '../api.dart';
|
import '../api.dart';
|
||||||
import '../preferences.dart';
|
|
||||||
import '../user_profile.dart';
|
import '../user_profile.dart';
|
||||||
|
|
||||||
class InvenTreeLoginSettingsWidget extends StatefulWidget {
|
class InvenTreeLoginSettingsWidget extends StatefulWidget {
|
||||||
@ -22,8 +21,6 @@ class _InvenTreeLoginSettingsState extends State<InvenTreeLoginSettingsWidget> {
|
|||||||
|
|
||||||
final GlobalKey<_InvenTreeLoginSettingsState> _loginKey = GlobalKey<_InvenTreeLoginSettingsState>();
|
final GlobalKey<_InvenTreeLoginSettingsState> _loginKey = GlobalKey<_InvenTreeLoginSettingsState>();
|
||||||
|
|
||||||
final GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
|
|
||||||
|
|
||||||
final GlobalKey<FormState> _addProfileKey = new GlobalKey<FormState>();
|
final GlobalKey<FormState> _addProfileKey = new GlobalKey<FormState>();
|
||||||
|
|
||||||
List<UserProfile> profiles = [];
|
List<UserProfile> profiles = [];
|
||||||
@ -250,7 +247,7 @@ class _InvenTreeLoginSettingsState extends State<InvenTreeLoginSettingsWidget> {
|
|||||||
|
|
||||||
List<Widget> children = [];
|
List<Widget> children = [];
|
||||||
|
|
||||||
if (profiles != null && profiles.length > 0) {
|
if (profiles.length > 0) {
|
||||||
for (int idx = 0; idx < profiles.length; idx++) {
|
for (int idx = 0; idx < profiles.length; idx++) {
|
||||||
UserProfile profile = profiles[idx];
|
UserProfile profile = profiles[idx];
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
import 'package:markdown/markdown.dart' as md;
|
|
||||||
import 'package:InvenTree/l10.dart';
|
import 'package:InvenTree/l10.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,8 +116,6 @@ class UserProfileDBManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future deleteProfile(UserProfile profile) async {
|
Future deleteProfile(UserProfile profile) async {
|
||||||
final finder = Finder(filter: Filter.equals("name", profile.name));
|
|
||||||
|
|
||||||
await store.record(profile.key).delete(await _db);
|
await store.record(profile.key).delete(await _db);
|
||||||
print("Deleted user profile <${profile.key}> - '${profile.name}'");
|
print("Deleted user profile <${profile.key}> - '${profile.name}'");
|
||||||
}
|
}
|
||||||
@ -133,8 +131,6 @@ class UserProfileDBManager {
|
|||||||
|
|
||||||
final profiles = await store.find(await _db);
|
final profiles = await store.find(await _db);
|
||||||
|
|
||||||
List<UserProfile> profileList = [];
|
|
||||||
|
|
||||||
for (int idx = 0; idx < profiles.length; idx++) {
|
for (int idx = 0; idx < profiles.length; idx++) {
|
||||||
|
|
||||||
if (profiles[idx].key is int && profiles[idx].key == selected) {
|
if (profiles[idx].key is int && profiles[idx].key == selected) {
|
||||||
|
@ -126,7 +126,7 @@ class _CategoryDisplayState extends RefreshableState<CategoryDisplayWidget> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_CategoryDisplayState(this.category) {}
|
_CategoryDisplayState(this.category);
|
||||||
|
|
||||||
// The local InvenTreePartCategory object
|
// The local InvenTreePartCategory object
|
||||||
final InvenTreePartCategory? category;
|
final InvenTreePartCategory? category;
|
||||||
|
@ -42,7 +42,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
|||||||
void _saveCompany(Map<String, String> values) async {
|
void _saveCompany(Map<String, String> values) async {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
|
|
||||||
var response = await company.update(values: values);
|
await company.update(values: values);
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
@ -57,13 +57,13 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
|||||||
showFormDialog(L10().edit,
|
showFormDialog(L10().edit,
|
||||||
key: _editCompanyKey,
|
key: _editCompanyKey,
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
FlatButton(
|
TextButton(
|
||||||
child: Text(L10().cancel),
|
child: Text(L10().cancel),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
FlatButton(
|
TextButton(
|
||||||
child: Text(L10().save),
|
child: Text(L10().save),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if (_editCompanyKey.currentState!.validate()) {
|
if (_editCompanyKey.currentState!.validate()) {
|
||||||
|
@ -5,9 +5,7 @@ import 'package:flutter/material.dart';
|
|||||||
|
|
||||||
import 'package:InvenTree/api.dart';
|
import 'package:InvenTree/api.dart';
|
||||||
import 'package:InvenTree/inventree/company.dart';
|
import 'package:InvenTree/inventree/company.dart';
|
||||||
import 'package:InvenTree/widget/drawer.dart';
|
|
||||||
import 'package:InvenTree/widget/refreshable_state.dart';
|
import 'package:InvenTree/widget/refreshable_state.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|
||||||
|
|
||||||
abstract class CompanyListWidget extends StatefulWidget {
|
abstract class CompanyListWidget extends StatefulWidget {
|
||||||
|
|
||||||
@ -50,7 +48,7 @@ class _CompanyListState extends RefreshableState<CompanyListWidget> {
|
|||||||
|
|
||||||
Map<String, String> _filters = Map<String, String>();
|
Map<String, String> _filters = Map<String, String>();
|
||||||
|
|
||||||
_CompanyListState(this._title, this._filters) {}
|
_CompanyListState(this._title, this._filters);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> onBuild(BuildContext context) async {
|
Future<void> onBuild(BuildContext context) async {
|
||||||
|
@ -163,10 +163,6 @@ Future<void> showStatusCodeError(int status, {int expected = 200}) async {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> showTimeoutError() async {
|
Future<void> showTimeoutError() async {
|
||||||
|
|
||||||
// Use OneContext as "sometimes" context is null here?
|
|
||||||
var ctx = OneContext().context;
|
|
||||||
|
|
||||||
await showServerError(L10().timeout, L10().noResponse);
|
await showServerError(L10().timeout, L10().noResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,8 +170,6 @@ void showFormDialog(String title, {String? acceptText, String? cancelText, Globa
|
|||||||
|
|
||||||
BuildContext? dialogContext;
|
BuildContext? dialogContext;
|
||||||
|
|
||||||
var ctx = OneContext().context;
|
|
||||||
|
|
||||||
String _accept = acceptText ?? L10().save;
|
String _accept = acceptText ?? L10().save;
|
||||||
String _cancel = cancelText ?? L10().cancel;
|
String _cancel = cancelText ?? L10().cancel;
|
||||||
|
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
|
|
||||||
import 'package:one_context/one_context.dart';
|
|
||||||
|
|
||||||
import 'package:InvenTree/l10.dart';
|
import 'package:InvenTree/l10.dart';
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import 'package:InvenTree/user_profile.dart';
|
import 'package:InvenTree/user_profile.dart';
|
||||||
import 'package:InvenTree/widget/starred_parts.dart';
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ class _LocationDisplayState extends RefreshableState<LocationDisplayWidget> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_LocationDisplayState(this.location) {}
|
_LocationDisplayState(this.location);
|
||||||
|
|
||||||
List<InvenTreeStockLocation> _sublocations = [];
|
List<InvenTreeStockLocation> _sublocations = [];
|
||||||
|
|
||||||
|
@ -2,8 +2,6 @@ import 'package:InvenTree/widget/drawer.dart';
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
||||||
import 'package:InvenTree/widget/drawer.dart';
|
|
||||||
|
|
||||||
|
|
||||||
abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
|
abstract class RefreshableState<T extends StatefulWidget> extends State<T> {
|
||||||
|
@ -48,8 +48,7 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
|||||||
final _moveStockKey = GlobalKey<FormState>();
|
final _moveStockKey = GlobalKey<FormState>();
|
||||||
final _editStockKey = GlobalKey<FormState>();
|
final _editStockKey = GlobalKey<FormState>();
|
||||||
|
|
||||||
_StockItemDisplayState(this.item) {
|
_StockItemDisplayState(this.item);
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Widget> getAppBarActions(BuildContext context) {
|
List<Widget> getAppBarActions(BuildContext context) {
|
||||||
|
@ -5,11 +5,8 @@
|
|||||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||||
// tree, read text, and verify that the values of widget properties are correct.
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
//import 'package:inventree_app/main.dart';
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user