diff --git a/.fvmrc b/.fvmrc new file mode 100644 index 00000000..984aec1c --- /dev/null +++ b/.fvmrc @@ -0,0 +1,3 @@ +{ + "flutter": "3.32.4" +} \ No newline at end of file diff --git a/.github/workflows/android.yaml b/.github/workflows/android.yaml index c1e2a002..117c9a85 100644 --- a/.github/workflows/android.yaml +++ b/.github/workflows/android.yaml @@ -15,25 +15,39 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v3 + - name: Setup Java uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '17' - - name: Setup Flutter - uses: subosito/flutter-action@v2 + + - name: Setup FVM + id: fvm-config-action + uses: kuhnroyal/flutter-fvm-config-action@v2 + + - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.2' - channel: 'stable' + flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} + channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} + cache: true + cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" + cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" + pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" + pub-cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" + - run: flutter --version + - name: Setup Gradle uses: gradle/gradle-build-action@v2.4.2 with: gradle-version: 8.7 + - name: Collect Translation Files run: | cd lib/l10n python3 collect_translations.py + - name: Build for Android run: | flutter pub get diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 19e20245..0dddcf8f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,19 +29,32 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive + - name: Setup Java uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '11' - - name: Setup Flutter - uses: subosito/flutter-action@v2 + + - name: Setup Flutter and FVM + id: fvm-config-action + uses: kuhnroyal/flutter-fvm-config-action@v2 + + - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.2' + flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} + channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} + cache: true + cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" + cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" + pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" + pub-cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" + - name: Collect Translation Files run: | cd lib/l10n python3 collect_translations.py + - name: Static Analysis Tests run: | python3 find_dart_files.py @@ -52,6 +65,7 @@ jobs: uses: actions/setup-python@v4 with: python-version: 3.9 + - name: Start InvenTree Server run: | sudo apt-get install python3-dev python3-pip python3-venv python3-wheel g++ @@ -64,6 +78,7 @@ jobs: invoke dev.server -a 127.0.0.1:8000 & invoke wait sleep 30 + - name: Unit Tests run: | flutter test --coverage diff --git a/.github/workflows/ios.yaml b/.github/workflows/ios.yaml index 2dc8235f..53e8a301 100644 --- a/.github/workflows/ios.yaml +++ b/.github/workflows/ios.yaml @@ -17,20 +17,33 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive + - name: Setup Java uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '11' + + - name: Setup FVM + id: fvm-config-action + uses: kuhnroyal/flutter-fvm-config-action@v2 + - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.2' - channel: 'stable' + flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} + channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} + cache: true + cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" + cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" + pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" + pub-cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" + - name: Collect Translation Files run: | cd lib/l10n python3 collect_translations.py + - name: Build for iOS run: | flutter pub get diff --git a/.gitignore b/.gitignore index 96b35284..8effbf9a 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,6 @@ ios/Podfile.lock !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages + +# FVM Version Cache +.fvm/ \ No newline at end of file diff --git a/BUILDING.md b/BUILDING.md index 9e1d3fea..c05e8e72 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -6,7 +6,8 @@ For developers looking to contribute to the project, we use Flutter for app deve To build the app from source, you will need the following tools installed on your system: -- Android Studio (with Flutter and Dart plugins) +- Android Studio or Visual Studio Code (with Flutter and Dart plugins) +- [Flutter Version Management (FVM)](https://fvm.app/) - We use FVM to manage Flutter versions ### iOS Development @@ -19,13 +20,61 @@ Some versions of Android Studio ship with a built-in version of the Java JDK. Ho If you see any errors related to JDK version mismatch, download and install the correct version of the JDK (from the link above) and update your Android Studio settings to point to the correct JDK location: ```bash -flutter config --jdk-dir /path/to/jdk +fvm flutter config --jdk-dir /path/to/jdk ``` ## Invoke Tasks We use the [invoke](https://www.pyinvoke.org) to run some core tasks - you will need python and invoke installed on your local system. +## Flutter Version Management (FVM) + +This project uses [Flutter Version Management (FVM)](https://fvm.app/) to ensure consistent Flutter versions across development environments and CI/CD pipelines. + +For installation instructions, please refer to the [official FVM documentation](https://fvm.app/documentation/getting-started/installation). + +Once installed, FVM will automatically use the Flutter version specified in the `.fvmrc` file at the root of the project. + +### Visual Studio Code + +To set up Visual Studio Code, you will need to make sure the `.vscode` directory exists. Then run `fvm use` to ensure the correct Flutter version is used. + +``` +mkdir -p .vscode +fvm use +``` + +#### What happens: +- Downloads SDK if not cached +- Creates `.fvm` directory with SDK symlink +- Updates `.fvmrc` configuration +- Configures IDE settings +- Runs `flutter pub get` + + +### Android Studio + +To set up Android Studio, run `fvm use` to ensure the correct Flutter version is used. + +``` +fvm use +``` + +#### What happens: +- Downloads SDK if not cached +- Creates `.fvm` directory with SDK symlink +- Updates `.fvmrc` configuration +- Runs `flutter pub get` + +Set Flutter SDK path in Android Studio: + +1. Open Android Studio +2. Go to `File` -> `Settings` -> `Languages & Frameworks` -> `Flutter` +3. Set `Flutter SDK path` to `.fvm/flutter_sdk`: + +![Setting Flutter SDK path in Android Studio](android_studio_fvm.png) + + ## Getting Started Initial project setup (after you have installed all required dev tools) is as follows: @@ -38,11 +87,30 @@ invoke translate Install required flutter packages: ``` -flutter pub get +fvm flutter pub get ``` You should now be ready to debug on a connected or emulated device! +## Troubleshooting + +### Flutter Doctor + +If you're experiencing issues with the development environment, run Flutter Doctor to diagnose problems: + +```bash +fvm flutter doctor -v +``` + +This will check your Flutter installation and identify any issues with your setup. Common issues include: + +- Missing Android SDK components +- iOS development tools not properly configured +- Missing dependencies + +Fix any identified issues before proceeding with development. + + ## Building Release Versions Building release versions for target platforms (either android or iOS) is simplified using invoke: diff --git a/analysis_options.yaml b/analysis_options.yaml index c470baee..eed06a48 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -80,3 +80,6 @@ linter: use_super_parameters: false + # TODO: Enable unnecessary_async and unawaited_futures rules + unnecessary_async: false + diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 00000000..97a5d137 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks \ No newline at end of file diff --git a/docs/android_studio_fvm.png b/docs/android_studio_fvm.png new file mode 100644 index 00000000..4d497b90 Binary files /dev/null and b/docs/android_studio_fvm.png differ diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 00000000..0ca5a97b --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 \ No newline at end of file diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index bda4a2a4..0e0897d9 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; @@ -56,6 +57,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, D95D9CD46BE28F7F69DBC0F6 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -157,6 +159,9 @@ dependencies = ( ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -186,6 +191,9 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -270,47 +278,15 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework", - "${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework", - "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework", - "${BUILT_PRODUCTS_DIR}/Sentry/Sentry.framework", - "${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework", "${BUILT_PRODUCTS_DIR}/audioplayers_darwin/audioplayers_darwin.framework", - "${BUILT_PRODUCTS_DIR}/camera_avfoundation/camera_avfoundation.framework", - "${BUILT_PRODUCTS_DIR}/device_info_plus/device_info_plus.framework", - "${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework", "${BUILT_PRODUCTS_DIR}/flutter_zxing/flutter_zxing.framework", - "${BUILT_PRODUCTS_DIR}/image_picker_ios/image_picker_ios.framework", "${BUILT_PRODUCTS_DIR}/open_filex/open_filex.framework", - "${BUILT_PRODUCTS_DIR}/package_info_plus/package_info_plus.framework", - "${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework", - "${BUILT_PRODUCTS_DIR}/sentry_flutter/sentry_flutter.framework", - "${BUILT_PRODUCTS_DIR}/shared_preferences_foundation/shared_preferences_foundation.framework", - "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", - "${BUILT_PRODUCTS_DIR}/url_launcher_ios/url_launcher_ios.framework", - "${BUILT_PRODUCTS_DIR}/wakelock_plus/wakelock_plus.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audioplayers_darwin.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/camera_avfoundation.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info_plus.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_zxing.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker_ios.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/open_filex.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences_foundation.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher_ios.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wakelock_plus.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -640,6 +616,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..819c57b6 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,69 @@ +{ + "originHash" : "820af3cc63f10647eb1a29c6d280a54dd695478a4b5abdddf411bf17c43695a0", + "pins" : [ + { + "identity" : "dkcamera", + "kind" : "remoteSourceControl", + "location" : "https://github.com/zhangao0086/DKCamera", + "state" : { + "branch" : "master", + "revision" : "5c691d11014b910aff69f960475d70e65d9dcc96" + } + }, + { + "identity" : "dkimagepickercontroller", + "kind" : "remoteSourceControl", + "location" : "https://github.com/zhangao0086/DKImagePickerController", + "state" : { + "branch" : "4.3.9", + "revision" : "0bdfeacefa308545adde07bef86e349186335915" + } + }, + { + "identity" : "dkphotogallery", + "kind" : "remoteSourceControl", + "location" : "https://github.com/zhangao0086/DKPhotoGallery", + "state" : { + "branch" : "master", + "revision" : "311c1bc7a94f1538f82773a79c84374b12a2ef3d" + } + }, + { + "identity" : "sdwebimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SDWebImage/SDWebImage", + "state" : { + "revision" : "cac9a55a3ae92478a2c95042dcc8d9695d2129ca", + "version" : "5.21.0" + } + }, + { + "identity" : "sentry-cocoa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/getsentry/sentry-cocoa", + "state" : { + "revision" : "491c87a32af58414bd03825b3029526640d3e73d", + "version" : "8.50.0" + } + }, + { + "identity" : "swiftygif", + "kind" : "remoteSourceControl", + "location" : "https://github.com/kirualex/SwiftyGif.git", + "state" : { + "revision" : "4430cbc148baa3907651d40562d96325426f409a", + "version" : "5.4.5" + } + }, + { + "identity" : "tocropviewcontroller", + "kind" : "remoteSourceControl", + "location" : "https://github.com/TimOliver/TOCropViewController", + "state" : { + "revision" : "a634cb7cdfd580006e79a6e74e64417fe9e9783b", + "version" : "2.7.4" + } + } + ], + "version" : 3 +} diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 5e31d3d3..128d5765 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..819c57b6 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,69 @@ +{ + "originHash" : "820af3cc63f10647eb1a29c6d280a54dd695478a4b5abdddf411bf17c43695a0", + "pins" : [ + { + "identity" : "dkcamera", + "kind" : "remoteSourceControl", + "location" : "https://github.com/zhangao0086/DKCamera", + "state" : { + "branch" : "master", + "revision" : "5c691d11014b910aff69f960475d70e65d9dcc96" + } + }, + { + "identity" : "dkimagepickercontroller", + "kind" : "remoteSourceControl", + "location" : "https://github.com/zhangao0086/DKImagePickerController", + "state" : { + "branch" : "4.3.9", + "revision" : "0bdfeacefa308545adde07bef86e349186335915" + } + }, + { + "identity" : "dkphotogallery", + "kind" : "remoteSourceControl", + "location" : "https://github.com/zhangao0086/DKPhotoGallery", + "state" : { + "branch" : "master", + "revision" : "311c1bc7a94f1538f82773a79c84374b12a2ef3d" + } + }, + { + "identity" : "sdwebimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SDWebImage/SDWebImage", + "state" : { + "revision" : "cac9a55a3ae92478a2c95042dcc8d9695d2129ca", + "version" : "5.21.0" + } + }, + { + "identity" : "sentry-cocoa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/getsentry/sentry-cocoa", + "state" : { + "revision" : "491c87a32af58414bd03825b3029526640d3e73d", + "version" : "8.50.0" + } + }, + { + "identity" : "swiftygif", + "kind" : "remoteSourceControl", + "location" : "https://github.com/kirualex/SwiftyGif.git", + "state" : { + "revision" : "4430cbc148baa3907651d40562d96325426f409a", + "version" : "5.4.5" + } + }, + { + "identity" : "tocropviewcontroller", + "kind" : "remoteSourceControl", + "location" : "https://github.com/TimOliver/TOCropViewController", + "state" : { + "revision" : "a634cb7cdfd580006e79a6e74e64417fe9e9783b", + "version" : "2.7.4" + } + } + ], + "version" : 3 +} diff --git a/lib/api.dart b/lib/api.dart index aee69491..c8e706fa 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -593,10 +593,8 @@ class InvenTreeAPI { L10().serverAuthenticationError, L10().invalidUsernamePassword, ); - break; default: showStatusCodeError(apiUrl, response.statusCode); - break; } debug("Token request failed: STATUS ${response.statusCode}"); @@ -1342,7 +1340,6 @@ class InvenTreeAPI { "responseData": response.data.toString(), } ); - break; } } else { @@ -1414,7 +1411,6 @@ class InvenTreeAPI { "endpoint": url, } ); - break; } showServerError( diff --git a/lib/api_form.dart b/lib/api_form.dart index c1cabbd4..75ea5d95 100644 --- a/lib/api_form.dart +++ b/lib/api_form.dart @@ -1171,7 +1171,6 @@ class _APIFormWidgetState extends State { case "related field": case "choice": widgets.add(Divider(height: 15)); - break; default: break; } @@ -1202,10 +1201,8 @@ class _APIFormWidgetState extends State { case "choice": widgets.add(Divider(height: 15)); spacerRequired = false; - break; default: spacerRequired = true; - break; } } @@ -1344,7 +1341,6 @@ class _APIFormWidgetState extends State { } } - break; } if (!match) { @@ -1473,43 +1469,36 @@ class _APIFormWidgetState extends State { extractNonFieldErrors(response); checkInvalidErrors(response); - break; case 401: showSnackIcon( "401: " + L10().response401, success: false ); - break; case 403: showSnackIcon( "403: " + L10().response403, success: false, ); - break; case 404: showSnackIcon( "404: " + L10().response404, success: false, ); - break; case 405: showSnackIcon( "405: " + L10().response405, success: false, ); - break; case 500: showSnackIcon( "500: " + L10().response500, success: false, ); - break; default: showSnackIcon( "${response.statusCode}: " + L10().responseInvalid, success: false, ); - break; } setState(() { diff --git a/lib/barcode/barcode.dart b/lib/barcode/barcode.dart index 0de089e7..7cd2f0f0 100644 --- a/lib/barcode/barcode.dart +++ b/lib/barcode/barcode.dart @@ -88,7 +88,6 @@ Future scanBarcode(BuildContext context, {BarcodeHandler? handler}) asy switch (barcodeControllerType) { case BARCODE_CONTROLLER_WEDGE: controller = WedgeBarcodeController(handler); - break; case BARCODE_CONTROLLER_CAMERA: default: // Already set as default option @@ -97,7 +96,7 @@ Future scanBarcode(BuildContext context, {BarcodeHandler? handler}) asy return Navigator.of(context).push( PageRouteBuilder( - pageBuilder: (context, _, __) => controller, + pageBuilder: (context, _, _) => controller, opaque: false, ) ); diff --git a/lib/barcode/camera_controller.dart b/lib/barcode/camera_controller.dart index 7e44de59..d6bfa6a0 100644 --- a/lib/barcode/camera_controller.dart +++ b/lib/barcode/camera_controller.dart @@ -24,7 +24,7 @@ import "package:inventree/barcode/controller.dart"; */ class CameraBarcodeController extends InvenTreeBarcodeController { const CameraBarcodeController(BarcodeHandler handler, {Key? key}) - : super(handler, key: key); + : super(handler, key: key); @override State createState() => _CameraBarcodeControllerState(); @@ -43,7 +43,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { String scanned_code = ""; final MobileScannerController controller = MobileScannerController( - autoZoom: true + autoZoom: true, ); @override @@ -63,11 +63,14 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { * Load the barcode scanning settings */ Future _loadSettings() async { - bool _single = await InvenTreeSettingsManager() - .getBool(INV_BARCODE_SCAN_SINGLE, false); + bool _single = await InvenTreeSettingsManager().getBool( + INV_BARCODE_SCAN_SINGLE, + false, + ); - int _delay = await InvenTreeSettingsManager() - .getValue(INV_BARCODE_SCAN_DELAY, 500) as int; + int _delay = + await InvenTreeSettingsManager().getValue(INV_BARCODE_SCAN_DELAY, 500) + as int; if (mounted) { setState(() { @@ -80,7 +83,6 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { @override Future pauseScan() async { - if (mounted) { setState(() { scanning_paused = true; @@ -90,7 +92,6 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { @override Future resumeScan() async { - controller.start(); if (mounted) { @@ -114,8 +115,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { setState(() { multiple_barcodes = false; }); - } - else if (result.barcodes.length > 1) { + } else if (result.barcodes.length > 1) { setState(() { multiple_barcodes = true; }); @@ -177,7 +177,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { sentryReportError( "CameraBarcodeController.onControllerCreated", error, - null + null, ); } @@ -185,7 +185,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { showSnackIcon( L10().cameraCreationError, icon: TablerIcons.camera_x, - success: false + success: false, ); if (OneContext.hasContext) { @@ -195,7 +195,6 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { } Widget BarcodeOverlay(BuildContext context) { - final Size screenSize = MediaQuery.of(context).size; final double width = screenSize.width; final double height = screenSize.height; @@ -220,14 +219,11 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { width: D, height: D, decoration: BoxDecoration( - border: Border.all( - color: overlayColor, - width: 4, - ), + border: Border.all(color: overlayColor, width: 4), ), - ) - ) - ] + ), + ), + ], ); } @@ -235,7 +231,6 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { * Build the barcode reader widget */ Widget BarcodeReader(BuildContext context) { - final Size screenSize = MediaQuery.of(context).size; final double width = screenSize.width; final double height = screenSize.height; @@ -250,7 +245,7 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { scanWindow: Rect.fromCenter( center: Offset(width / 2, height / 2), width: D, - height: D + height: D, ), onDetect: (result) { onScanSuccess(result); @@ -263,28 +258,23 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { child: Align( alignment: Alignment.topCenter, child: Padding( - padding: EdgeInsets.only( - left: 10, - right: 10, - top: 75, - bottom: 10 - ), + padding: EdgeInsets.only(left: 10, right: 10, top: 75, bottom: 10), child: Text( widget.handler.getOverlayText(context), style: TextStyle( color: Colors.white, fontSize: 16, - fontWeight: FontWeight.bold - ) - ) - ) - ) + fontWeight: FontWeight.bold, + ), + ), + ), + ), ); } Widget bottomCenterOverlay() { - - String info_text = scanning_paused ? L10().barcodeScanPaused : L10().barcodeScanPause; + String info_text = + scanning_paused ? L10().barcodeScanPaused : L10().barcodeScanPause; String text = scanned_code.isNotEmpty ? scanned_code : info_text; @@ -296,28 +286,22 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { child: Align( alignment: Alignment.bottomCenter, child: Padding( - padding: EdgeInsets.only( - left: 10, - right: 10, - top: 10, - bottom: 75 - ), + padding: EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 75), child: Text( - text, - textAlign: TextAlign.center, - style: TextStyle( - color: Colors.white, - fontSize: 16, - fontWeight: FontWeight.bold - ) + text, + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.bold, + ), ), - ) - ) + ), + ), ); } Widget? buildActions(BuildContext context) { - List actions = [ SpeedDialChild( child: Icon(flash_status ? TablerIcons.bulb_off : TablerIcons.bulb), @@ -329,26 +313,22 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { flash_status = !flash_status; }); } - } + }, ), SpeedDialChild( child: Icon(TablerIcons.camera), label: L10().switchCamera, onTap: () async { controller.switchCamera(); - } - ) + }, + ), ]; - return SpeedDial( - icon: Icons.more_horiz, - children: actions, - ); + return SpeedDial(icon: Icons.more_horiz, children: actions); } @override Widget build(BuildContext context) { - return Scaffold( appBar: AppBar( backgroundColor: COLOR_APP_BAR, @@ -366,19 +346,12 @@ class _CameraBarcodeControllerState extends InvenTreeBarcodeControllerState { }, child: Stack( children: [ - Column( - children: [ - Expanded( - child: BarcodeReader(context) - ), - ], - ), + Column(children: [Expanded(child: BarcodeReader(context))]), topCenterOverlay(), - bottomCenterOverlay() + bottomCenterOverlay(), ], ), ), ); } - } diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index 07b74f83..6df483af 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -584,7 +584,6 @@ class InvenTreeModel { L10().itemDeleted, success: false, ); - break; default: String detail = L10().errorFetch; detail += "\n${L10().statusCode}: ${response.statusCode}"; @@ -594,7 +593,6 @@ class InvenTreeModel { L10().serverError, detail ); - break; } return false; diff --git a/lib/main.dart b/lib/main.dart index e1ea41a2..033ef21a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -66,15 +66,12 @@ Future main() async { switch (orientation) { case SCREEN_ORIENTATION_PORTRAIT: orientations.add(DeviceOrientation.portraitUp); - break; case SCREEN_ORIENTATION_LANDSCAPE: orientations.add(DeviceOrientation.landscapeLeft); - break; default: orientations.add(DeviceOrientation.portraitUp); orientations.add(DeviceOrientation.landscapeLeft); orientations.add(DeviceOrientation.landscapeRight); - break; } SystemChrome.setPreferredOrientations(orientations).then((_) { diff --git a/lib/settings/app_settings.dart b/lib/settings/app_settings.dart index 8eba55bd..2443e812 100644 --- a/lib/settings/app_settings.dart +++ b/lib/settings/app_settings.dart @@ -143,14 +143,11 @@ class _InvenTreeAppSettingsState extends State { switch (screenOrientation) { case SCREEN_ORIENTATION_PORTRAIT: orientationIcon = Icons.screen_lock_portrait; - break; case SCREEN_ORIENTATION_LANDSCAPE: orientationIcon = Icons.screen_lock_landscape; - break; case SCREEN_ORIENTATION_SYSTEM: default: orientationIcon = Icons.screen_rotation; - break; } return Scaffold( diff --git a/lib/settings/barcode_settings.dart b/lib/settings/barcode_settings.dart index 08a7bf60..f3776cd2 100644 --- a/lib/settings/barcode_settings.dart +++ b/lib/settings/barcode_settings.dart @@ -104,11 +104,9 @@ class _InvenTreeBarcodeSettingsState extends State showErrorDialog(String title, {String description = "", APIResponse ) ); } - break; default: // Unhandled server response children.add( @@ -180,7 +179,6 @@ Future showErrorDialog(String title, {String description = "", APIResponse ) ); - break; } } diff --git a/lib/widget/part/part_suppliers.dart b/lib/widget/part/part_suppliers.dart index 73b5cb32..204ac6e7 100644 --- a/lib/widget/part/part_suppliers.dart +++ b/lib/widget/part/part_suppliers.dart @@ -68,7 +68,7 @@ class _PartSupplierState extends RefreshableState { return ListView.separated( shrinkWrap: true, physics: ClampingScrollPhysics(), - separatorBuilder: (_, __) => const Divider(height: 3), + separatorBuilder: (_, _) => const Divider(height: 3), itemCount: _supplierParts.length, itemBuilder: _supplierPartTile, ); diff --git a/pubspec.lock b/pubspec.lock index 002a6e38..9520e7e5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: "direct main" description: name: adaptive_theme - sha256: f4ee609b464e5efc68131d9d15ba9aa1de4e3b5ede64be17781c6e19a52d637d + sha256: caa49b4c73b681bf12a641dff77aa1383262a00cf38b9d1a25b180e275ba5ab9 url: "https://pub.dev" source: hosted - version: "3.6.0" + version: "3.7.0" analyzer: dependency: transitive description: @@ -29,20 +29,20 @@ packages: dependency: transitive description: name: archive - sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "4.0.7" args: dependency: transitive description: name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.7.0" async: - dependency: transitive + dependency: "direct main" description: name: async sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" @@ -53,58 +53,58 @@ packages: dependency: "direct main" description: name: audioplayers - sha256: c346ba5a39dc208f1bab55fc239855f573d69b0e832402114bf0b793622adc4d + sha256: a5341380a4f1d3a10a4edde5bb75de5127fe31e0faa8c4d860e64d2f91ad84c7 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.4.0" audioplayers_android: dependency: transitive description: name: audioplayers_android - sha256: de576b890befe27175c2f511ba8b742bec83765fa97c3ce4282bba46212f58e4 + sha256: f8c90823a45b475d2c129f85bbda9c029c8d4450b172f62e066564c6e170f69a url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.2.0" audioplayers_darwin: dependency: transitive description: name: audioplayers_darwin - sha256: e507887f3ff18d8e5a10a668d7bedc28206b12e10b98347797257c6ae1019c3b + sha256: "405cdbd53ebdb4623f1c5af69f275dad4f930ce895512d5261c07cd95d23e778" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.2.0" audioplayers_linux: dependency: transitive description: name: audioplayers_linux - sha256: "3d3d244c90436115417f170426ce768856d8fe4dfc5ed66a049d2890acfa82f9" + sha256: "7e0d081a6a527c53aef9539691258a08ff69a7dc15ef6335fbea1b4b03ebbef0" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.2.0" audioplayers_platform_interface: dependency: transitive description: name: audioplayers_platform_interface - sha256: "6834dd48dfb7bc6c2404998ebdd161f79cd3774a7e6779e1348d54a3bfdcfaa5" + sha256: "77e5fa20fb4a64709158391c75c1cca69a481d35dc879b519e350a05ff520373" url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.1.0" audioplayers_web: dependency: transitive description: name: audioplayers_web - sha256: "3609bdf0e05e66a3d9750ee40b1e37f2a622c4edb796cc600b53a90a30a2ace4" + sha256: bd99d8821114747682a2be0adcdb70233d4697af989b549d3a20a0f49f6c9b13 url: "https://pub.dev" source: hosted - version: "5.0.1" + version: "5.1.0" audioplayers_windows: dependency: transitive description: name: audioplayers_windows - sha256: "8605762dddba992138d476f6a0c3afd9df30ac5b96039929063eceed416795c2" + sha256: "871d3831c25cd2408ddc552600fd4b32fba675943e319a41284704ee038ad563" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.2.0" back_button_interceptor: dependency: transitive description: @@ -125,26 +125,26 @@ packages: dependency: "direct main" description: name: cached_network_image - sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" + sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" + sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.1" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" + sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" camera: dependency: "direct main" description: @@ -157,18 +157,18 @@ packages: dependency: transitive description: name: camera_android_camerax - sha256: "0bd3d1645df00af2540a22df13ba466ac5fb2838a09bce4089cecdb1712a9e94" + sha256: b4197bd6ce75bc66963a904c34c4cbb6aaa2260a5d4aca13b3556926cf3a92b8 url: "https://pub.dev" source: hosted - version: "0.6.18" + version: "0.6.18+3" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: fdc0e668f65c8ddfb3be6c10ef4737fb6274cd04d8053a9525d410642f7989c0 + sha256: ca244564876d5a76f2126bca501aec25243cad23ba1784819242aea2fd25cf70 url: "https://pub.dev" source: hosted - version: "0.9.19+1" + version: "0.9.19+2" camera_platform_interface: dependency: transitive description: @@ -197,10 +197,10 @@ packages: dependency: transitive description: name: checked_yaml - sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "2.0.4" cli_config: dependency: transitive description: @@ -237,18 +237,18 @@ packages: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" coverage: dependency: transitive description: name: coverage - sha256: "4b8701e48a58f7712492c9b1f7ba0bb9d525644dd66d023b62e1fc8cdb560c8a" + sha256: aa07dbe5f2294c827b7edb9a87bba44a9c15a3cc81bc8da2ca19b37322d30080 url: "https://pub.dev" source: hosted - version: "1.14.0" + version: "1.14.1" cross_file: dependency: transitive description: @@ -261,10 +261,10 @@ packages: dependency: transitive description: name: crypto - sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" cupertino_icons: dependency: "direct main" description: @@ -301,18 +301,18 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 + sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53" url: "https://pub.dev" source: hosted - version: "10.1.2" + version: "11.4.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" + sha256: "0b04e02b30791224b31969eb1b50d723498f402971bff3630bca2ba839bd1ed2" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.0.2" dropdown_search: dependency: "direct main" description: @@ -333,42 +333,42 @@ packages: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.1" file_picker: dependency: "direct main" description: name: file_picker - sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12" + sha256: ef9908739bdd9c476353d6adff72e88fd00c625f5b959ae23f7567bd5137db0a url: "https://pub.dev" source: hosted - version: "8.1.2" + version: "10.2.0" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" url: "https://pub.dev" source: hosted - version: "0.9.2+1" + version: "0.9.3+2" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: cb284e267f8e2a45a904b5c094d2ba51d0aabfc20b1538ab786d9ef7dc2bf75c + sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" url: "https://pub.dev" source: hosted - version: "0.9.4+1" + version: "0.9.4+3" file_selector_platform_interface: dependency: transitive description: @@ -381,10 +381,18 @@ packages: dependency: transitive description: name: file_selector_windows - sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69" + sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.3+4" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" flutter: dependency: "direct main" description: flutter @@ -394,18 +402,18 @@ packages: dependency: "direct main" description: name: flutter_cache_manager - sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" + sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.1" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: "619817c4b65b322b5104b6bb6dfe6cda62d9729bd7ad4303ecc8b4e690a67a77" + sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" url: "https://pub.dev" source: hosted - version: "0.14.1" + version: "0.14.4" flutter_localizations: dependency: "direct main" description: flutter @@ -439,10 +447,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda" + sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e url: "https://pub.dev" source: hosted - version: "2.0.22" + version: "2.0.28" flutter_speed_dial: dependency: "direct main" description: @@ -489,10 +497,10 @@ packages: dependency: transitive description: name: glob - sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" http: dependency: "direct main" description: @@ -505,26 +513,26 @@ packages: dependency: transitive description: name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.2" image: dependency: transitive description: name: image - sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "4.5.4" image_picker: dependency: "direct main" description: @@ -537,50 +545,50 @@ packages: dependency: transitive description: name: image_picker_android - sha256: c0a6763d50b354793d0192afd0a12560b823147d3ded7c6b77daf658fa05cc85 + sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb" url: "https://pub.dev" source: hosted - version: "0.8.12+13" + version: "0.8.12+23" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "65d94623e15372c5c51bebbcb820848d7bcb323836e12dfdba60b5d3a8b39e50" + sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" + sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" url: "https://pub.dev" source: hosted - version: "0.8.12" + version: "0.8.12+2" image_picker_linux: dependency: transitive description: name: image_picker_linux - sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" + sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.1+2" image_picker_macos: dependency: transitive description: name: image_picker_macos - sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" + sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.1+2" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80" + sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.10.1" image_picker_windows: dependency: transitive description: @@ -593,10 +601,10 @@ packages: dependency: "direct main" description: name: infinite_scroll_pagination - sha256: b68bce20752fcf36c7739e60de4175494f74e99e9a69b4dd2fe3a1dd07a7f16a + sha256: "4047eb8191e8b33573690922a9e995af64c3949dc87efc844f936b039ea279df" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.0" intl: dependency: "direct main" description: @@ -609,18 +617,18 @@ packages: dependency: transitive description: name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" js: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "0.7.2" json_annotation: dependency: transitive description: @@ -657,26 +665,26 @@ packages: dependency: "direct dev" description: name: lint - sha256: d758a5211fce7fd3f5e316f804daefecdc34c7e53559716125e6da7388ae8565 + sha256: "3cd03646de313481336500ba02eb34d07c590535525f154aae7fda7362aa07a9" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.8.0" logging: dependency: transitive description: name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" markdown: dependency: transitive description: name: markdown - sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051 + sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1" url: "https://pub.dev" source: hosted - version: "7.2.2" + version: "7.3.0" matcher: dependency: transitive description: @@ -705,10 +713,10 @@ packages: dependency: transitive description: name: mime - sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "2.0.0" mobile_scanner: dependency: "direct main" description: @@ -737,10 +745,10 @@ packages: dependency: "direct main" description: name: one_context - sha256: "40607e6cf85d95dc81ee037788857a943784d37dfc04a40904a140328745e0af" + sha256: bafae468bdb5d1089736c4e97582b85abd994a80b65c5becb6956a31c59d69e4 url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.1.0" open_filex: dependency: "direct main" description: @@ -753,26 +761,26 @@ packages: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: da8d9ac8c4b1df253d1a328b7bf01ae77ef132833479ab40763334db13b91cce + sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.3.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 + sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.2.0" path: dependency: "direct main" description: @@ -793,18 +801,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" + sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 url: "https://pub.dev" source: hosted - version: "2.2.10" + version: "2.2.17" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" path_provider_linux: dependency: transitive description: @@ -833,18 +841,18 @@ packages: dependency: transitive description: name: petitparser - sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.1.0" platform: dependency: transitive description: name: platform - sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: @@ -861,38 +869,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62 + url: "https://pub.dev" + source: hosted + version: "6.0.2" pub_semver: dependency: transitive description: name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" url: "https://pub.dev" source: hosted - version: "2.1.4" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" - url: "https://pub.dev" - source: hosted - version: "1.5.0" + version: "2.2.0" rxdart: dependency: transitive description: name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" url: "https://pub.dev" source: hosted - version: "0.27.7" + version: "0.28.0" sembast: dependency: "direct main" description: name: sembast - sha256: "934a7b99297fb4f0b6e69fb1465286737b3b47b1a5149bf8dfc85667fbbdd21d" + sha256: "7119cf6f79bd1d48c8ec7943f4facd96c15ab26823021ed0792a487c7cd34441" url: "https://pub.dev" source: hosted - version: "3.7.4+3" + version: "3.8.5+1" sentry: dependency: transitive description: @@ -913,26 +921,26 @@ packages: dependency: transitive description: name: shared_preferences - sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" + sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.5.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" + sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.10" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.5.4" shared_preferences_linux: dependency: transitive description: @@ -953,10 +961,10 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" shared_preferences_windows: dependency: transitive description: @@ -969,10 +977,10 @@ packages: dependency: transitive description: name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.2" shelf_packages_handler: dependency: transitive description: @@ -993,10 +1001,10 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" sky_engine: dependency: transitive description: flutter @@ -1022,10 +1030,10 @@ packages: dependency: transitive description: name: source_maps - sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" url: "https://pub.dev" source: hosted - version: "0.10.12" + version: "0.10.13" source_span: dependency: transitive description: @@ -1034,22 +1042,54 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" sqflite: dependency: transitive description: name: sqflite - sha256: ff5a2436ef8ebdfda748fbfe957f9981524cb5ff11e7bafa8c42771840e8a788 + sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 url: "https://pub.dev" source: hosted - version: "2.3.3+2" + version: "2.4.2" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" + url: "https://pub.dev" + source: hosted + version: "2.4.1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "2d8e607db72e9cb7748c9c6e739e2c9618320a5517de693d5a24609c4671b1a4" + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" url: "https://pub.dev" source: hosted - version: "2.5.4+4" + version: "2.5.5" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" + url: "https://pub.dev" + source: hosted + version: "2.4.0" stack_trace: dependency: transitive description: @@ -1070,10 +1110,10 @@ packages: dependency: transitive description: name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: @@ -1086,10 +1126,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" + sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6" url: "https://pub.dev" source: hosted - version: "3.3.0+3" + version: "3.3.1" term_glyph: dependency: transitive description: @@ -1126,10 +1166,10 @@ packages: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" url_launcher: dependency: "direct main" description: @@ -1142,34 +1182,34 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab + sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" url: "https://pub.dev" source: hosted - version: "6.3.10" + version: "6.3.16" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e + sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" url: "https://pub.dev" source: hosted - version: "6.3.1" + version: "6.3.3" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "769549c999acdb42b8bcfa7c43d72bf79a382ca7441ab18a808e101149daf672" + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_platform_interface: dependency: transitive description: @@ -1182,26 +1222,26 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.4" uuid: dependency: transitive description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "4.5.1" vector_math: dependency: transitive description: @@ -1238,34 +1278,34 @@ packages: dependency: transitive description: name: watcher - sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" web: dependency: transitive description: name: web - sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" web_socket: dependency: transitive description: name: web_socket - sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83" + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" url: "https://pub.dev" source: hosted - version: "0.1.6" + version: "1.0.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f" + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.3" webkit_inspection_protocol: dependency: transitive description: @@ -1278,26 +1318,26 @@ packages: dependency: transitive description: name: win32 - sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" url: "https://pub.dev" source: hosted - version: "5.13.0" + version: "5.14.0" win32_registry: dependency: transitive description: name: win32_registry - sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" url: "https://pub.dev" source: hosted - version: "1.1.5" + version: "2.1.0" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" xml: dependency: transitive description: @@ -1310,10 +1350,10 @@ packages: dependency: transitive description: name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" sdks: - dart: ">=3.7.0 <3.32.2" + dart: ">=3.8.1 <4.0.0" flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 97e2a98c..8cadcccc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,19 +4,20 @@ description: InvenTree stock management version: 0.18.1+98 environment: - sdk: ">=2.19.5 <3.32.2" + sdk: ^3.8.1 dependencies: adaptive_theme: ^3.3.0 # Theme management (e.g. dark mode) + async: any audioplayers: ^6.1.0 # Play audio files cached_network_image: ^3.3.1 # Download and cache remote images camera: ^0.11.1 # Camera cupertino_icons: ^1.0.8 currency_formatter: ^2.2.1 # Currency formatting datetime_picker_formfield: ^2.0.1 # Date / time picker - device_info_plus: ^10.1.2 # Information about the device + device_info_plus: ^11.4.0 # Information about the device dropdown_search: ^5.0.6 # Dropdown autocomplete form fields - file_picker: ^8.1.2 # Select files from the device + file_picker: ^10.1.4 # Select files from the device flutter: sdk: flutter flutter_cache_manager: ^3.3.0 diff --git a/tasks.py b/tasks.py index 43573a44..a34d0350 100644 --- a/tasks.py +++ b/tasks.py @@ -8,7 +8,7 @@ from invoke import task @task def clean(c): """Clean flutter build.""" - c.run("flutter clean") + c.run("fvm flutter clean") @task def update(c): @@ -20,20 +20,20 @@ def translate(c): """Update translation files.""" here = os.path.dirname(__file__) - l10_dir = os.path.join(here, 'lib', 'l10n') + l10_dir = os.path.join(here, "lib", "l10n") l10_dir = os.path.abspath(l10_dir) - python = 'python3' if sys.platform.lower() == 'darwin' else 'python' + python = "python3" if sys.platform.lower() == "darwin" else "python" c.run(f"cd {l10_dir} && {python} collect_translations.py") @task(pre=[clean, update, translate]) def ios(c): """Build iOS app in release configuration.""" - c.run("flutter build ipa --release --no-tree-shake-icons") + c.run("fvm flutter build ipa --release --no-tree-shake-icons") @task(pre=[clean, update, translate]) def android(c): """Build Android app in release configuration.""" - c.run("flutter build appbundle --release --no-tree-shake-icons") + c.run("fvm flutter build appbundle --release --no-tree-shake-icons")