mirror of
https://github.com/inventree/inventree-app.git
synced 2025-04-27 21:16:48 +00:00
Package updates (#365)
* Update dart version * Update flutter version in workflow * Update packages * Updates to android workflow * Specify dart verrsion in CI * Run flutter upgrade * Helps to check which workflow is actually running I guess * Disable linting check * linting fixes * linting * Bug fix for paginator
This commit is contained in:
parent
b051aeccda
commit
21ace1ae02
9
.github/workflows/android.yaml
vendored
9
.github/workflows/android.yaml
vendored
@ -15,8 +15,6 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
@ -25,9 +23,11 @@ jobs:
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.7.3'
|
||||
flutter-version: '3.10.4'
|
||||
channel: 'stable'
|
||||
- run: flutter --version
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
uses: gradle/gradle-build-action@v2.4.2
|
||||
with:
|
||||
gradle-version: 7.6
|
||||
- name: Collect Translation Files
|
||||
@ -36,6 +36,7 @@ jobs:
|
||||
python3 collect_translations.py
|
||||
- name: Build for Android
|
||||
run: |
|
||||
flutter upgrade
|
||||
flutter pub get
|
||||
cp lib/dummy_dsn.dart lib/dsn.dart
|
||||
flutter build apk --debug
|
||||
|
3
.github/workflows/ci.yaml
vendored
3
.github/workflows/ci.yaml
vendored
@ -39,13 +39,14 @@ jobs:
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.7.3'
|
||||
flutter-version: '3.10.4'
|
||||
- name: Collect Translation Files
|
||||
run: |
|
||||
cd lib/l10n
|
||||
python3 collect_translations.py
|
||||
- name: Static Analysis Tests
|
||||
run: |
|
||||
flutter upgrade
|
||||
cp lib/dummy_dsn.dart lib/dsn.dart
|
||||
python3 find_dart_files.py
|
||||
flutter pub get
|
||||
|
@ -6,8 +6,6 @@ analyzer:
|
||||
- lib/generated/**
|
||||
language:
|
||||
strict-raw-types: true
|
||||
strong-mode:
|
||||
implicit-casts: false
|
||||
|
||||
linter:
|
||||
rules:
|
||||
@ -21,6 +19,8 @@ linter:
|
||||
|
||||
prefer_double_quotes: true
|
||||
|
||||
unreachable_from_main: false
|
||||
|
||||
prefer_final_locals: false
|
||||
|
||||
prefer_const_constructors: false
|
||||
@ -76,4 +76,6 @@ linter:
|
||||
|
||||
avoid_classes_with_only_static_members: false
|
||||
|
||||
no_leading_underscores_for_local_identifiers: false
|
||||
no_leading_underscores_for_local_identifiers: false
|
||||
|
||||
use_super_parameters: false
|
||||
|
@ -29,6 +29,6 @@ subprojects {
|
||||
}
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
tasks.register("clean", Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
20
lib/api.dart
20
lib/api.dart
@ -80,6 +80,26 @@ class APIResponse {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper function to interpret response, and return a list.
|
||||
* Handles case where the response is paginated, or a complete set of results
|
||||
*/
|
||||
List<dynamic> resultsList() {
|
||||
|
||||
if (isList()) {
|
||||
return asList();
|
||||
} else if (isMap()) {
|
||||
var response = asMap();
|
||||
if (response.containsKey("results")) {
|
||||
return response["results"] as List<dynamic>;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -538,13 +538,7 @@ class APIFormField {
|
||||
final APIResponse response = await InvenTreeAPI().get(api_url, params: _filters);
|
||||
|
||||
if (response.isValid()) {
|
||||
List<dynamic> results = [];
|
||||
|
||||
for (var result in response.data["results"] ?? []) {
|
||||
results.add(result);
|
||||
}
|
||||
|
||||
return results;
|
||||
return response.resultsList();
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
@ -1334,10 +1328,10 @@ class _APIFormWidgetState extends State<APIFormWidget> {
|
||||
// Ensure the response is a valid JSON structure
|
||||
Map<String, dynamic> json = {};
|
||||
|
||||
if (response.data != null && response.data is Map) {
|
||||
for (dynamic key in response.data.keys) {
|
||||
json[key.toString()] = response.data[key];
|
||||
}
|
||||
var data = response.asMap();
|
||||
|
||||
for (String key in data.keys) {
|
||||
json[key.toString()] = data[key];
|
||||
}
|
||||
|
||||
successFunc(json);
|
||||
|
@ -726,7 +726,9 @@ class InvenTreeModel {
|
||||
|
||||
page.results = [];
|
||||
|
||||
for (var result in response.data["results"]) {
|
||||
List<dynamic> results = dataMap["results"] as List<dynamic>;
|
||||
|
||||
for (dynamic result in results) {
|
||||
page.addResult(createFromJson(result as Map<String, dynamic>));
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,8 @@ Future<void> showErrorDialog(String title, {String description = "", APIResponse
|
||||
switch (response.statusCode) {
|
||||
case 400: // Bad request (typically bad input)
|
||||
if (response.data is Map<String, dynamic>) {
|
||||
for (String field in response.data.keys) {
|
||||
|
||||
for (String field in response.asMap().keys) {
|
||||
|
||||
dynamic error = response.data[field];
|
||||
|
||||
|
@ -280,7 +280,8 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||
},
|
||||
).then((APIResponse response) {
|
||||
if (response.isValid() && response.statusCode == 200) {
|
||||
for (var label in response.data) {
|
||||
|
||||
for (var label in response.resultsList()) {
|
||||
if (label is Map<String, dynamic>) {
|
||||
labels.add(label);
|
||||
}
|
||||
|
100
pubspec.lock
100
pubspec.lock
@ -13,10 +13,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: adaptive_theme
|
||||
sha256: "61bde10390e937d11d05c6cf0d5cf378a73d49f9a442262e43613dae60ed0b3f"
|
||||
sha256: "2d9bfee4240cdfad1b169cb43ac38fb49487e7fe1cc845e2973d4cef1780c0f6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.0"
|
||||
version: "3.3.0"
|
||||
analyzer:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -45,66 +45,66 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.0"
|
||||
version: "2.11.0"
|
||||
audioplayers:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: audioplayers
|
||||
sha256: "16451eab798b23ad9307aef6f9ca62bb8fb06542af8810eead0d236d3fd40a42"
|
||||
sha256: "61583554386721772f9309f509e17712865b38565a903c761f96b1115a979282"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "4.1.0"
|
||||
audioplayers_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: audioplayers_android
|
||||
sha256: b2c833e6f718b6b030454e329931229afafe9327fdb002874dd544dc8bf2484d
|
||||
sha256: dbdc9b7f2aa2440314c638aa55aadd45c7705e8340d5eddf2e3fb8da32d4ae2c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "3.0.2"
|
||||
audioplayers_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: audioplayers_darwin
|
||||
sha256: e7a3c8759bf11ecfe4b20df338bf9f3d37c7719a5761c46a3833aba0ceeaacff
|
||||
sha256: "6aea96df1d12f7ad5a71d88c6d1b22a216211a9564219920124c16768e456e9d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "4.1.0"
|
||||
audioplayers_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: audioplayers_linux
|
||||
sha256: e95b65e1f4d4764601dac5e65f8d8186fc29401043ab020f1dacec483d708707
|
||||
sha256: "396b62ac62c92dd26c3bc5106583747f57a8b325ebd2b41e5576f840cfc61338"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "2.1.0"
|
||||
audioplayers_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: audioplayers_platform_interface
|
||||
sha256: "178581a44cb685fd798d2108111d2e98cca3400e30b9c3a05546f124fb37f600"
|
||||
sha256: f7daaed4659143094151ecf6bacd927d29ab8acffba98c110c59f0b81ae51143
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
version: "5.0.1"
|
||||
audioplayers_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: audioplayers_web
|
||||
sha256: "859ba09be2a57e57a787273f18c8cf0d9b61383870c5ee4b5632fe9adbc37edf"
|
||||
sha256: ec84fd46eed1577148ed4113f5998a36a18da4fce7170c37ce3e21b631393339
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "3.1.0"
|
||||
audioplayers_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: audioplayers_windows
|
||||
sha256: "622e01c4c357c2aaf1b956c3a0f89d97c3cb40315c03f16e3b6c2a31ff9c38bc"
|
||||
sha256: "1d3aaac98a192b8488167711ba1e67d8b96333e8d0572ede4e2912e5bbce69a3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.3"
|
||||
version: "2.0.2"
|
||||
back_button_interceptor:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -189,10 +189,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.3.0"
|
||||
checked_yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -221,10 +221,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
||||
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.17.1"
|
||||
convert:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -269,10 +269,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: currency_formatter
|
||||
sha256: "24034a969f21a55071b1cf835655c1fb1fd94e3acd498a77283e945002591fb6"
|
||||
sha256: "8fc2b612e465a4e886f5d8d3a7cec03cc3cabab617ef96bf54c70886c907f2c3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "2.0.1"
|
||||
datetime_picker_formfield:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -529,10 +529,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: intl
|
||||
sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91"
|
||||
sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.17.0"
|
||||
version: "0.18.0"
|
||||
io:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -545,10 +545,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: js
|
||||
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
|
||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.5"
|
||||
version: "0.6.7"
|
||||
json_annotation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -561,10 +561,10 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: lint
|
||||
sha256: "3e9343b1cededcfb1e8b40d0dbd3592b7a1c6c0121545663a991433390c2bc97"
|
||||
sha256: f4bd4dbaa39f4ae8836f2d1275f2f32bc68b3a8cce0a0735dd1f7a601f06682a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.1.2"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -585,10 +585,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.13"
|
||||
version: "0.12.15"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -601,10 +601,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
||||
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.0"
|
||||
version: "1.9.1"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -673,10 +673,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: path
|
||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.8.3"
|
||||
path_provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -817,26 +817,26 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sembast
|
||||
sha256: "4997717aa84f0622691815d7e2739988b7f7d3a463302fc878f7d5acfa748e96"
|
||||
sha256: "3875487075df740e3ed0817571c950f015e5f730ff84fa0351849bf002fb4e1b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.4.0+6"
|
||||
version: "3.4.6+1"
|
||||
sentry:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sentry
|
||||
sha256: cce8f5d696c7083e6915477b455de2134b689aff69bc31249844646f91a52ac7
|
||||
sha256: "0316390446c6497664379b3d72d1bc1b6e4c5385cf6c1f6a02c5ab5a3ce179ce"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.5.0"
|
||||
version: "7.7.0"
|
||||
sentry_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sentry_flutter
|
||||
sha256: a772ad8abafdcf4ac04568bf3469cc541761412fd664a7aa99d9578fd0933a09
|
||||
sha256: cca6f3bcfa00d327d85424a42e4cc3b3abe25e6a2d68c4ff64b0e2a606684666
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.5.0"
|
||||
version: "7.7.0"
|
||||
shared_preferences:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1030,26 +1030,26 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: test
|
||||
sha256: a5fcd2d25eeadbb6589e80198a47d6a464ba3e2049da473943b8af9797900c2d
|
||||
sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.22.0"
|
||||
version: "1.24.1"
|
||||
test_api:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
||||
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.16"
|
||||
version: "0.5.1"
|
||||
test_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_core
|
||||
sha256: "0ef9755ec6d746951ba0aabe62f874b707690b5ede0fecc818b138fcc9b14888"
|
||||
sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.20"
|
||||
version: "0.5.1"
|
||||
typed_data:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1211,5 +1211,5 @@ packages:
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
sdks:
|
||||
dart: ">=2.18.0 <3.0.0"
|
||||
flutter: ">=3.3.0"
|
||||
dart: ">=3.0.0 <4.0.0"
|
||||
flutter: ">=3.10.0"
|
||||
|
20
pubspec.yaml
20
pubspec.yaml
@ -4,15 +4,15 @@ description: InvenTree stock management
|
||||
version: 0.12.1+67
|
||||
|
||||
environment:
|
||||
sdk: ">=2.16.0 <3.0.0"
|
||||
sdk: ">=2.19.5 <3.0.0"
|
||||
|
||||
dependencies:
|
||||
adaptive_theme: ^3.2.0 # Theme management (e.g. dark mode)
|
||||
audioplayers: ^3.0.1 # Play audio files
|
||||
adaptive_theme: ^3.3.0 # Theme management (e.g. dark mode)
|
||||
audioplayers: ^4.1.0 # Play audio files
|
||||
cached_network_image: ^3.2.3 # Download and cache remote images
|
||||
camera: ^0.10.3 # Camera
|
||||
cupertino_icons: ^1.0.3
|
||||
currency_formatter: ^2.0.0
|
||||
currency_formatter: ^2.0.1
|
||||
datetime_picker_formfield: ^2.0.1 # Date / time picker
|
||||
device_info_plus: ^8.2.2 # Information about the device
|
||||
dropdown_search: ^5.0.6 # Dropdown autocomplete form fields
|
||||
@ -20,7 +20,7 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_cache_manager: ^3.3.0
|
||||
flutter_localizations:
|
||||
flutter_localizations:
|
||||
sdk: flutter
|
||||
flutter_localized_locales: ^2.0.4
|
||||
flutter_markdown: ^0.6.13+1 # Rendering markdown
|
||||
@ -30,22 +30,22 @@ dependencies:
|
||||
http: ^0.13.5
|
||||
image_picker: ^0.8.7+4 # Select or take photos
|
||||
infinite_scroll_pagination: ^3.2.0 # Let the server do all the work!
|
||||
intl: ^0.17.0
|
||||
intl: ^0.18.0
|
||||
one_context: ^2.1.0 # Dialogs without requiring context
|
||||
open_filex: ^4.3.2 # Open local files
|
||||
package_info_plus: ^3.0.2 # App information introspection
|
||||
path: ^1.8.2
|
||||
path_provider: ^2.0.12 # Local file storage
|
||||
qr_code_scanner: ^1.0.1 # Barcode scanning
|
||||
sembast: ^3.4.0+6 # NoSQL data storage
|
||||
sentry_flutter: ^7.5.0 # Error reporting
|
||||
url_launcher: ^6.1.10 # Open link in system browser
|
||||
sembast: ^3.4.6+1 # NoSQL data storage
|
||||
sentry_flutter: ^7.7.0 # Error reporting
|
||||
url_launcher: ^6.1.10 # Open link in system browser
|
||||
|
||||
dev_dependencies:
|
||||
flutter_launcher_icons: ^0.11.0
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
lint: ^2.0.1
|
||||
lint: ^2.1.2
|
||||
test: ^1.22.0
|
||||
|
||||
flutter_icons:
|
||||
|
@ -15,7 +15,7 @@ void setupTestEnv() {
|
||||
|
||||
// Mock the path provider
|
||||
const MethodChannel channel = MethodChannel("plugins.flutter.io/path_provider");
|
||||
TestDefaultBinaryMessengerBinding.instance?.defaultBinaryMessenger
|
||||
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
|
||||
.setMockMethodCallHandler(channel, (MethodCall methodCall) async {
|
||||
return ".";
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user