2
0
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:
Oliver 2023-06-12 22:52:07 +10:00 committed by GitHub
parent b051aeccda
commit 21ace1ae02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 106 additions and 84 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -29,6 +29,6 @@ subprojects {
}
}
task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}

View File

@ -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 [];
}
}
}

View File

@ -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);

View File

@ -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>));
}

View File

@ -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];

View File

@ -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);
}

View File

@ -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"

View File

@ -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:

View File

@ -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 ".";
});