From 11e783d94b920523cbf8405c97fc28e7c5834547 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 08:46:10 -0700 Subject: [PATCH 01/39] chore(deps): bump subosito/flutter-action from 2.18.0 to 2.19.0 (#766) Bumps [subosito/flutter-action](https://github.com/subosito/flutter-action) from 2.18.0 to 2.19.0. - [Release notes](https://github.com/subosito/flutter-action/releases) - [Commits](https://github.com/subosito/flutter-action/compare/v2.18.0...v2.19.0) --- updated-dependencies: - dependency-name: subosito/flutter-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/code-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index 2758baf0..c50679c2 100644 --- a/.github/workflows/code-analysis.yml +++ b/.github/workflows/code-analysis.yml @@ -22,7 +22,7 @@ jobs: with: java-version: 11 distribution: temurin - - uses: subosito/flutter-action@v2.18.0 + - uses: subosito/flutter-action@v2.19.0 with: flutter-version: '3.29.0' cache: true From ad64d83ffba00e5304728371d81547927901f8f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 15:17:00 -0700 Subject: [PATCH 02/39] chore(deps): bump actions/setup-java from 4.7.0 to 4.7.1 (#773) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.7.0 to 4.7.1. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v4.7.0...v4.7.1) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 4.7.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/code-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index c50679c2..a35edb6e 100644 --- a/.github/workflows/code-analysis.yml +++ b/.github/workflows/code-analysis.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4.2.2 - - uses: actions/setup-java@v4.7.0 + - uses: actions/setup-java@v4.7.1 with: java-version: 11 distribution: temurin From fc587d7f38917fb7d919018c9579f580124a3668 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 15:01:14 -0700 Subject: [PATCH 03/39] chore(deps): bump actions/checkout from 4.2.2 to 5.0.0 (#793) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4.2.2...v5.0.0) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/code-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index a35edb6e..bd817b48 100644 --- a/.github/workflows/code-analysis.yml +++ b/.github/workflows/code-analysis.yml @@ -17,7 +17,7 @@ jobs: runs-on: macos-latest steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v5.0.0 - uses: actions/setup-java@v4.7.1 with: java-version: 11 From dc355dbe93aa315a4e7224a742376d3ed081c3fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 15:01:28 -0700 Subject: [PATCH 04/39] chore(deps): bump amannn/action-semantic-pull-request from 5 to 6 (#795) Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 5 to 6. - [Release notes](https://github.com/amannn/action-semantic-pull-request/releases) - [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md) - [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v5...v6) --- updated-dependencies: - dependency-name: amannn/action-semantic-pull-request dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/semantic-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/semantic-pr.yml b/.github/workflows/semantic-pr.yml index 481c3291..2af75b85 100644 --- a/.github/workflows/semantic-pr.yml +++ b/.github/workflows/semantic-pr.yml @@ -12,6 +12,6 @@ jobs: name: Validate PR title runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5 + - uses: amannn/action-semantic-pull-request@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 2114850e5d5c46b3725b3b6a003014c5430b455c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 09:07:48 -0700 Subject: [PATCH 05/39] chore(deps): bump actions/stale from 9 to 10 (#803) Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v9...v10) --- updated-dependencies: - dependency-name: actions/stale dependency-version: '10' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/inactive-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/inactive-issues.yml b/.github/workflows/inactive-issues.yml index 0e652277..860a17c0 100644 --- a/.github/workflows/inactive-issues.yml +++ b/.github/workflows/inactive-issues.yml @@ -11,7 +11,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: days-before-issue-stale: 30 days-before-issue-close: 14 From e956fd6de80c7f73444f4f88eff82a4045374cc5 Mon Sep 17 00:00:00 2001 From: "Milind Mevada [GHL]" <111348702+milind-highlevel@users.noreply.github.com> Date: Wed, 17 Sep 2025 21:38:38 +0530 Subject: [PATCH 06/39] chore: google_mlkit_entity_extraction native dependency upgraded (#806) --- packages/google_mlkit_entity_extraction/CHANGELOG.md | 3 +++ packages/google_mlkit_entity_extraction/android/build.gradle | 2 +- packages/google_mlkit_entity_extraction/pubspec.yaml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/google_mlkit_entity_extraction/CHANGELOG.md b/packages/google_mlkit_entity_extraction/CHANGELOG.md index 531e21a4..9e666a77 100644 --- a/packages/google_mlkit_entity_extraction/CHANGELOG.md +++ b/packages/google_mlkit_entity_extraction/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.15.2 +* Update dependencies + ## 0.15.1 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_entity_extraction/android/build.gradle b/packages/google_mlkit_entity_extraction/android/build.gradle index e5919c16..e378bb21 100644 --- a/packages/google_mlkit_entity_extraction/android/build.gradle +++ b/packages/google_mlkit_entity_extraction/android/build.gradle @@ -36,6 +36,6 @@ android { } dependencies { - implementation("com.google.mlkit:entity-extraction:16.0.0-beta5") + implementation("com.google.mlkit:entity-extraction:16.0.0-beta6") } } diff --git a/packages/google_mlkit_entity_extraction/pubspec.yaml b/packages/google_mlkit_entity_extraction/pubspec.yaml index 4bca4869..766373ef 100644 --- a/packages/google_mlkit_entity_extraction/pubspec.yaml +++ b/packages/google_mlkit_entity_extraction/pubspec.yaml @@ -1,6 +1,6 @@ name: google_mlkit_entity_extraction description: "A Flutter plugin to use Google's ML Kit Entity Extractor API to recognize specific entities within static text." -version: 0.15.1 +version: 0.15.2 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_entity_extraction From 3654338ee1fd1df58aba734ed7b5995983cefed0 Mon Sep 17 00:00:00 2001 From: Nguyen Ngoc Long Date: Wed, 17 Sep 2025 23:13:55 +0700 Subject: [PATCH 07/39] fix: app freeze (ANR) when we check if a model has been downloaded (isModelDownloaded) (#807) --- .../GenericModelManager.java | 116 +++++++++++------- .../DigitalInkRecognizer.java | 32 ++++- .../ImageLabelDetector.java | 65 ++++++---- .../ObjectDetector.java | 93 ++++++++------ 4 files changed, 197 insertions(+), 109 deletions(-) diff --git a/packages/google_mlkit_commons/android/src/main/java/com/google_mlkit_commons/GenericModelManager.java b/packages/google_mlkit_commons/android/src/main/java/com/google_mlkit_commons/GenericModelManager.java index 6cd19193..6b3a45e6 100644 --- a/packages/google_mlkit_commons/android/src/main/java/com/google_mlkit_commons/GenericModelManager.java +++ b/packages/google_mlkit_commons/android/src/main/java/com/google_mlkit_commons/GenericModelManager.java @@ -1,17 +1,9 @@ package com.google_mlkit_commons; -import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.Tasks; import com.google.mlkit.common.model.DownloadConditions; import com.google.mlkit.common.model.RemoteModel; import com.google.mlkit.common.model.RemoteModelManager; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; @@ -20,13 +12,22 @@ public class GenericModelManager { private static final String DELETE = "delete"; private static final String CHECK = "check"; - public RemoteModelManager remoteModelManager = RemoteModelManager.getInstance(); + public interface CheckModelIsDownloadedCallback { + void onCheckResult(Boolean isDownloaded); + + void onError(Exception e); + } - //To avoid downloading models in the main thread as they are around 20MB and may crash the app. - private final ExecutorService executorService = Executors.newCachedThreadPool(); + public RemoteModelManager remoteModelManager = RemoteModelManager.getInstance(); public void manageModel(final RemoteModel model, final MethodCall call, final MethodChannel.Result result) { String task = call.argument("task"); + + if (task == null) { + result.notImplemented(); + return; + } + switch (task) { case DOWNLOAD: boolean isWifiReqRequired = call.argument("wifi"); @@ -41,9 +42,20 @@ public void manageModel(final RemoteModel model, final MethodCall call, final Me deleteModel(model, result); break; case CHECK: - Boolean downloaded = isModelDownloaded(model); - if (downloaded != null) result.success(downloaded); - else result.error("error", null, null); + isModelDownloaded( + model, + new CheckModelIsDownloadedCallback() { + @Override + public void onCheckResult(Boolean isDownloaded) { + result.success(isDownloaded); + } + + @Override + public void onError(Exception e) { + result.error("error", e.toString(), null); + } + } + ); break; default: result.notImplemented(); @@ -51,42 +63,56 @@ public void manageModel(final RemoteModel model, final MethodCall call, final Me } public void downloadModel(RemoteModel remoteModel, DownloadConditions downloadConditions, final MethodChannel.Result result) { - if (isModelDownloaded(remoteModel)) { - result.success("success"); - return; - } - remoteModelManager.download(remoteModel, downloadConditions).addOnSuccessListener(aVoid -> result.success("success")).addOnFailureListener(e -> result.error("error", e.toString(), null)); - } + isModelDownloaded( + remoteModel, + new CheckModelIsDownloadedCallback() { + @Override + public void onCheckResult(Boolean isDownloaded) { + if (isDownloaded) { + result.success("success"); + return; + } - public void deleteModel(RemoteModel remoteModel, final MethodChannel.Result result) { - if (!isModelDownloaded(remoteModel)) { - result.success("success"); - return; - } - remoteModelManager.deleteDownloadedModel(remoteModel).addOnSuccessListener(aVoid -> result.success("success")).addOnFailureListener(e -> result.error("error", e.toString(), null)); - } + remoteModelManager.download(remoteModel, downloadConditions) + .addOnSuccessListener(aVoid -> result.success("success")) + .addOnFailureListener(e -> result.error("error", e.toString(), null)); + } - public Boolean isModelDownloaded(RemoteModel model) { - IsModelDownloaded myCallable = new IsModelDownloaded(remoteModelManager.isModelDownloaded(model)); - Future taskResult = executorService.submit(myCallable); - try { - return taskResult.get(); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - return null; + @Override + public void onError(Exception e) { + result.error("error", e.toString(), null); + } + } + ); } -} -class IsModelDownloaded implements Callable { - final Task booleanTask; + public void deleteModel(RemoteModel remoteModel, final MethodChannel.Result result) { + isModelDownloaded(remoteModel, new CheckModelIsDownloadedCallback() { + @Override + public void onCheckResult(Boolean isDownloaded) { + if (!isDownloaded) { + result.success("success"); + return; + } + remoteModelManager.deleteDownloadedModel(remoteModel) + .addOnSuccessListener(aVoid -> result.success("success")) + .addOnFailureListener(e -> result.error("error", e.toString(), null)); + } - public IsModelDownloaded(Task booleanTask) { - this.booleanTask = booleanTask; + @Override + public void onError(Exception e) { + result.error("error", e.toString(), null); + } + }); } - @Override - public Boolean call() throws Exception { - return Tasks.await(booleanTask); + public void isModelDownloaded(RemoteModel model, CheckModelIsDownloadedCallback callback) { + try { + remoteModelManager.isModelDownloaded(model) + .addOnFailureListener(callback::onError) + .addOnSuccessListener(callback::onCheckResult); + } catch (Exception e) { + callback.onError(e); + } } -} +} \ No newline at end of file diff --git a/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java b/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java index 14005216..e100fe4c 100644 --- a/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java +++ b/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java @@ -54,11 +54,33 @@ private void handleDetection(MethodCall call, final MethodChannel.Result result) DigitalInkRecognitionModel model = getModel(tag, result); if (model == null) return; - if (!genericModelManager.isModelDownloaded(model)) { - result.error("Model Error", "Model has not been downloaded yet ", null); - return; - } + genericModelManager.isModelDownloaded( + model, + new GenericModelManager.CheckModelIsDownloadedCallback() { + @Override + public void onCheckResult(Boolean isDownloaded) { + if (!isDownloaded) { + result.error("Model Error", "Model has not been downloaded yet ", null); + return; + } + + handleInkDetectionIfModelDownloaded(call, result, model); + } + + @Override + public void onError(Exception e) { + result.error("Model download check failed", e.toString(), e); + } + } + ); + } + + private void handleInkDetectionIfModelDownloaded( + MethodCall call, + final MethodChannel.Result result, + DigitalInkRecognitionModel model + ) { String id = call.argument("id"); com.google.mlkit.vision.digitalink.DigitalInkRecognizer recognizer = instances.get(id); if (recognizer == null) { @@ -164,4 +186,4 @@ private DigitalInkRecognitionModel getModel(String tag, final MethodChannel.Resu } return DigitalInkRecognitionModel.builder(modelIdentifier).build(); } -} +} \ No newline at end of file diff --git a/packages/google_mlkit_image_labeling/android/src/main/java/com/google_mlkit_image_labeling/ImageLabelDetector.java b/packages/google_mlkit_image_labeling/android/src/main/java/com/google_mlkit_image_labeling/ImageLabelDetector.java index 16a4729d..93bc20e5 100644 --- a/packages/google_mlkit_image_labeling/android/src/main/java/com/google_mlkit_image_labeling/ImageLabelDetector.java +++ b/packages/google_mlkit_image_labeling/android/src/main/java/com/google_mlkit_image_labeling/ImageLabelDetector.java @@ -79,12 +79,43 @@ private void handleDetection(MethodCall call, final MethodChannel.Result result) CustomImageLabelerOptions labelerOptions = getLocalOptions(options); imageLabeler = ImageLabeling.getClient(labelerOptions); } else if (type.equals("remote")) { - CustomImageLabelerOptions labelerOptions = getRemoteOptions(options); - if (labelerOptions == null) { - result.error("Error Model has not been downloaded yet", "Model has not been downloaded yet", "Model has not been downloaded yet"); - return; - } - imageLabeler = ImageLabeling.getClient(labelerOptions); + float confidenceThreshold = (float) (double) options.get("confidenceThreshold"); + int maxCount = (int) options.get("maxCount"); + String name = (String) options.get("modelName"); + + FirebaseModelSource firebaseModelSource = new FirebaseModelSource.Builder(name).build(); + CustomRemoteModel remoteModel = new CustomRemoteModel.Builder(firebaseModelSource).build(); + + genericModelManager.isModelDownloaded( + remoteModel, + new GenericModelManager.CheckModelIsDownloadedCallback() { + @Override + public void onCheckResult(Boolean isDownloaded) { + if (!isDownloaded) { + result.error("Error Model has not been downloaded yet", "Model has not been downloaded yet", "Model has not been downloaded yet"); + return; + } + + startImageLabelDetector( + ImageLabeling.getClient( + new CustomImageLabelerOptions.Builder(remoteModel) + .setConfidenceThreshold(confidenceThreshold) + .setMaxResultCount(maxCount) + .build() + ), + inputImage, + result + ); + } + + @Override + public void onError(Exception e) { + result.error("Model download check failed", e.getMessage(), e); + } + } + ); + + return; } else { String error = "Invalid model type: " + type; result.error(type, error, error); @@ -93,6 +124,10 @@ private void handleDetection(MethodCall call, final MethodChannel.Result result) instances.put(id, imageLabeler); } + startImageLabelDetector(imageLabeler, inputImage, result); + } + + private void startImageLabelDetector(ImageLabeler imageLabeler, InputImage inputImage, MethodChannel.Result result) { imageLabeler.process(inputImage) .addOnSuccessListener(imageLabels -> { List> labels = new ArrayList<>(imageLabels.size()); @@ -131,24 +166,6 @@ private CustomImageLabelerOptions getLocalOptions(Map labelerOpt .build(); } - //Options for labeler to work with custom model. - private CustomImageLabelerOptions getRemoteOptions(Map labelerOptions) { - float confidenceThreshold = (float) (double) labelerOptions.get("confidenceThreshold"); - int maxCount = (int) labelerOptions.get("maxCount"); - String name = (String) labelerOptions.get("modelName"); - - FirebaseModelSource firebaseModelSource = new FirebaseModelSource.Builder(name).build(); - CustomRemoteModel remoteModel = new CustomRemoteModel.Builder(firebaseModelSource).build(); - if (!genericModelManager.isModelDownloaded(remoteModel)) { - return null; - } - - return new CustomImageLabelerOptions.Builder(remoteModel) - .setConfidenceThreshold(confidenceThreshold) - .setMaxResultCount(maxCount) - .build(); - } - private void closeDetector(MethodCall call) { String id = call.argument("id"); ImageLabeler imageLabeler = instances.get(id); diff --git a/packages/google_mlkit_object_detection/android/src/main/java/com/google_mlkit_object_detection/ObjectDetector.java b/packages/google_mlkit_object_detection/android/src/main/java/com/google_mlkit_object_detection/ObjectDetector.java index f15cc4ab..45cd674b 100644 --- a/packages/google_mlkit_object_detection/android/src/main/java/com/google_mlkit_object_detection/ObjectDetector.java +++ b/packages/google_mlkit_object_detection/android/src/main/java/com/google_mlkit_object_detection/ObjectDetector.java @@ -58,7 +58,7 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result } private void handleDetection(MethodCall call, final MethodChannel.Result result) { - Map imageData = (Map) call.argument("imageData"); + Map imageData = call.argument("imageData"); InputImage inputImage = InputImageConverter.getInputImageFromData(imageData, context, result); if (inputImage == null) return; @@ -79,12 +79,55 @@ private void handleDetection(MethodCall call, final MethodChannel.Result result) CustomObjectDetectorOptions detectorOptions = getLocalOptions(options); objectDetector = ObjectDetection.getClient(detectorOptions); } else if (type.equals("remote")) { - CustomObjectDetectorOptions detectorOptions = getRemoteOptions(options); - if (detectorOptions == null) { - result.error("Error Model has not been downloaded yet", "Model has not been downloaded yet", "Model has not been downloaded yet"); - return; - } - objectDetector = ObjectDetection.getClient(detectorOptions); + int mode = (int) options.get("mode"); + int finalMode = mode == 0 ? + CustomObjectDetectorOptions.STREAM_MODE : + CustomObjectDetectorOptions.SINGLE_IMAGE_MODE; + boolean classify = (boolean) options.get("classify"); + boolean multiple = (boolean) options.get("multiple"); + double threshold = (double) options.get("threshold"); + int maxLabels = (int) options.get("maxLabels"); + String name = (String) options.get("modelName"); + + FirebaseModelSource firebaseModelSource = new FirebaseModelSource.Builder(name) + .build(); + CustomRemoteModel remoteModel = new CustomRemoteModel.Builder(firebaseModelSource) + .build(); + + genericModelManager.isModelDownloaded( + remoteModel, + new GenericModelManager.CheckModelIsDownloadedCallback() { + @Override + public void onCheckResult(Boolean isDownloaded) { + if (!isDownloaded) { + result.error("Error Model has not been downloaded yet", "Model has not been downloaded yet", "Model has not been downloaded yet"); + return; + } + + CustomObjectDetectorOptions.Builder builder = new CustomObjectDetectorOptions.Builder(remoteModel) + .setDetectorMode(finalMode) + .setMaxPerObjectLabelCount(maxLabels) + .setClassificationConfidenceThreshold((float) threshold); + if (classify) builder.enableClassification(); + if (multiple) builder.enableMultipleObjects(); + + CustomObjectDetectorOptions customObjectDetectorOptions = builder.build(); + + startObjectDetection( + ObjectDetection.getClient(customObjectDetectorOptions), + inputImage, + result + ); + } + + @Override + public void onError(Exception e) { + result.error("Model download check failed", e.getMessage(), e); + } + } + ); + + return; } else { String error = "Invalid model type: " + type; result.error(type, error, error); @@ -93,6 +136,14 @@ private void handleDetection(MethodCall call, final MethodChannel.Result result) instances.put(id, objectDetector); } + startObjectDetection(objectDetector, inputImage, result); + } + + private void startObjectDetection( + com.google.mlkit.vision.objects.ObjectDetector objectDetector, + InputImage inputImage, + MethodChannel.Result result + ) { objectDetector.process(inputImage).addOnSuccessListener(detectedObjects -> { List> objects = new ArrayList<>(); for (DetectedObject detectedObject : detectedObjects) { @@ -149,34 +200,6 @@ private CustomObjectDetectorOptions getLocalOptions(Map options) return builder.build(); } - private CustomObjectDetectorOptions getRemoteOptions(Map options) { - int mode = (int) options.get("mode"); - mode = mode == 0 ? - CustomObjectDetectorOptions.STREAM_MODE : - CustomObjectDetectorOptions.SINGLE_IMAGE_MODE; - boolean classify = (boolean) options.get("classify"); - boolean multiple = (boolean) options.get("multiple"); - double threshold = (double) options.get("threshold"); - int maxLabels = (int) options.get("maxLabels"); - String name = (String) options.get("modelName"); - - FirebaseModelSource firebaseModelSource = new FirebaseModelSource.Builder(name) - .build(); - CustomRemoteModel remoteModel = new CustomRemoteModel.Builder(firebaseModelSource) - .build(); - if (!genericModelManager.isModelDownloaded(remoteModel)) { - return null; - } - - CustomObjectDetectorOptions.Builder builder = new CustomObjectDetectorOptions.Builder(remoteModel); - builder.setDetectorMode(mode); - if (classify) builder.enableClassification(); - if (multiple) builder.enableMultipleObjects(); - builder.setMaxPerObjectLabelCount(maxLabels); - builder.setClassificationConfidenceThreshold((float) threshold); - return builder.build(); - } - private void addData(Map addTo, Integer trackingId, Rect rect, From f3397499e96eb9901f7d259a13fb1521b03d992f Mon Sep 17 00:00:00 2001 From: selvam920 Date: Thu, 18 Sep 2025 22:15:44 +0530 Subject: [PATCH 08/39] fix: Update Digital Ink to V19 (#808) --- .github/workflows/code-analysis.yml | 2 +- packages/example/android/app/build.gradle.kts | 3 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- packages/example/android/settings.gradle.kts | 4 +- .../activity_indicator.dart | 2 +- .../vision_detector_views/camera_view.dart | 5 +- .../vision_detector_views/detector_view.dart | 4 +- .../vision_detector_views/gallery_view.dart | 5 +- .../text_from_widget_view.dart | 2 +- packages/example/pubspec.lock | 128 +++++++++--------- packages/example/pubspec.yaml | 7 +- packages/google_ml_kit/lib/src/vision.dart | 3 +- packages/google_ml_kit/pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../pubspec.yaml | 6 +- .../google_mlkit_commons/android/build.gradle | 2 +- packages/google_mlkit_commons/pubspec.yaml | 6 +- .../CHANGELOG.md | 3 + .../android/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 7 + .../DigitalInkRecognizer.java | 24 ++-- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../google_mlkit_face_detection/pubspec.yaml | 6 +- .../android/build.gradle | 4 +- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../lib/src/image_labeler.dart | 10 +- .../google_mlkit_image_labeling/pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../google_mlkit_language_id/pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../lib/src/object_detector.dart | 24 ++-- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../google_mlkit_pose_detection/pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../google_mlkit_smart_reply/pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../pubspec.yaml | 6 +- .../android/build.gradle | 2 +- .../google_mlkit_translation/pubspec.yaml | 6 +- 50 files changed, 184 insertions(+), 189 deletions(-) create mode 100644 packages/google_mlkit_digital_ink_recognition/android/gradle/wrapper/gradle-wrapper.properties diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index bd817b48..474beeda 100644 --- a/.github/workflows/code-analysis.yml +++ b/.github/workflows/code-analysis.yml @@ -24,7 +24,7 @@ jobs: distribution: temurin - uses: subosito/flutter-action@v2.19.0 with: - flutter-version: '3.29.0' + flutter-version: '3.35.3' cache: true - name: Install dependencies for google_ml_kit diff --git a/packages/example/android/app/build.gradle.kts b/packages/example/android/app/build.gradle.kts index 905efde4..dad00d73 100644 --- a/packages/example/android/app/build.gradle.kts +++ b/packages/example/android/app/build.gradle.kts @@ -8,7 +8,6 @@ plugins { android { namespace = "com.google.ml.kit.flutter.example" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -21,7 +20,7 @@ android { defaultConfig { applicationId = "com.google.ml.kit.flutter.example" - minSdk = 24 + minSdk = 26 targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/packages/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/example/android/gradle/wrapper/gradle-wrapper.properties index afa1e8eb..74b269f3 100644 --- a/packages/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/example/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip diff --git a/packages/example/android/settings.gradle.kts b/packages/example/android/settings.gradle.kts index 11662c30..b6fd9e4d 100644 --- a/packages/example/android/settings.gradle.kts +++ b/packages/example/android/settings.gradle.kts @@ -18,8 +18,8 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.0" apply false - id("org.jetbrains.kotlin.android") version "2.1.0" apply false + id("com.android.application") version "8.13.0" apply false + id("org.jetbrains.kotlin.android") version "2.2.0" apply false } include(":app") diff --git a/packages/example/lib/activity_indicator/activity_indicator.dart b/packages/example/lib/activity_indicator/activity_indicator.dart index 6ac5a0b2..72d28837 100644 --- a/packages/example/lib/activity_indicator/activity_indicator.dart +++ b/packages/example/lib/activity_indicator/activity_indicator.dart @@ -37,7 +37,7 @@ class Toast { class LoadingIndicator extends StatelessWidget { final String text; - const LoadingIndicator({Key? key, required this.text}) : super(key: key); + const LoadingIndicator({super.key, required this.text}); @override Widget build(BuildContext context) { diff --git a/packages/example/lib/vision_detector_views/camera_view.dart b/packages/example/lib/vision_detector_views/camera_view.dart index d3a87f8c..051c1e1c 100644 --- a/packages/example/lib/vision_detector_views/camera_view.dart +++ b/packages/example/lib/vision_detector_views/camera_view.dart @@ -7,14 +7,13 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; class CameraView extends StatefulWidget { CameraView( - {Key? key, + {super.key, required this.customPaint, required this.onImage, this.onCameraFeedReady, this.onDetectorViewModeChanged, this.onCameraLensDirectionChanged, - this.initialCameraLensDirection = CameraLensDirection.back}) - : super(key: key); + this.initialCameraLensDirection = CameraLensDirection.back}); final CustomPaint? customPaint; final Function(InputImage inputImage) onImage; diff --git a/packages/example/lib/vision_detector_views/detector_view.dart b/packages/example/lib/vision_detector_views/detector_view.dart index 0a8db76a..3ade4ffd 100644 --- a/packages/example/lib/vision_detector_views/detector_view.dart +++ b/packages/example/lib/vision_detector_views/detector_view.dart @@ -9,7 +9,7 @@ enum DetectorViewMode { liveFeed, gallery } class DetectorView extends StatefulWidget { DetectorView({ - Key? key, + super.key, required this.title, required this.onImage, this.customPaint, @@ -19,7 +19,7 @@ class DetectorView extends StatefulWidget { this.onCameraFeedReady, this.onDetectorViewModeChanged, this.onCameraLensDirectionChanged, - }) : super(key: key); + }); final String title; final CustomPaint? customPaint; diff --git a/packages/example/lib/vision_detector_views/gallery_view.dart b/packages/example/lib/vision_detector_views/gallery_view.dart index f9cd00b7..aa8f710f 100644 --- a/packages/example/lib/vision_detector_views/gallery_view.dart +++ b/packages/example/lib/vision_detector_views/gallery_view.dart @@ -10,12 +10,11 @@ import 'utils.dart'; class GalleryView extends StatefulWidget { GalleryView( - {Key? key, + {super.key, required this.title, this.text, required this.onImage, - required this.onDetectorViewModeChanged}) - : super(key: key); + required this.onDetectorViewModeChanged}); final String title; final String? text; diff --git a/packages/example/lib/vision_detector_views/text_from_widget_view.dart b/packages/example/lib/vision_detector_views/text_from_widget_view.dart index faf56e3e..a401612d 100644 --- a/packages/example/lib/vision_detector_views/text_from_widget_view.dart +++ b/packages/example/lib/vision_detector_views/text_from_widget_view.dart @@ -7,7 +7,7 @@ import 'package:flutter/rendering.dart'; import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; class TextFromWidgetView extends StatefulWidget { - const TextFromWidgetView({Key? key}) : super(key: key); + const TextFromWidgetView({super.key}); @override State createState() => _TextFromWidgetViewState(); diff --git a/packages/example/pubspec.lock b/packages/example/pubspec.lock index 8c10a8c0..2dd01c9c 100644 --- a/packages/example/pubspec.lock +++ b/packages/example/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.12.0" + version: "2.13.0" boolean_selector: dependency: transitive description: @@ -21,42 +21,42 @@ packages: dependency: "direct main" description: name: camera - sha256: "413d2b34fe28496c35c69ede5b232fb9dd5ca2c3a4cb606b14efc1c7546cc8cb" + sha256: d6ec2cbdbe2fa8f5e0d07d8c06368fe4effa985a4a5ddade9cc58a8cd849557d url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.11.2" camera_android: dependency: "direct main" description: name: camera_android - sha256: "997f19dbdb1bb0e40bdb87265c7e550abea657fe3c4ba3720f81e97b6d4b64dd" + sha256: cd49ccb409201a893bf625dca2df8746b88679f302826ab4d12748788a3a24b3 url: "https://pub.dev" source: hosted - version: "0.10.10+1" + version: "0.10.10+7" camera_android_camerax: dependency: transitive description: name: camera_android_camerax - sha256: "13784f539c7f104766bff84e4479a70f03b29d78b208278be45c939250d9d7f5" + sha256: "2d438248554f44766bf9ea34c117a5bb0074e241342ef7c22c768fb431335234" url: "https://pub.dev" source: hosted - version: "0.6.14+1" + version: "0.6.21" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: ba48b65a3a97004276ede882e6b838d9667642ff462c95a8bb57ca8a82b6bd25 + sha256: "951ef122d01ebba68b7a54bfe294e8b25585635a90465c311b2f875ae72c412f" url: "https://pub.dev" source: hosted - version: "0.9.18+11" + version: "0.9.21+2" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "953e7baed3a7c8fae92f7200afeb2be503ff1a17c3b4e4ed7b76f008c2810a31" + sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" camera_web: dependency: transitive description: @@ -101,18 +101,18 @@ packages: dependency: transitive description: name: fake_async - sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.3" ffi: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" file_selector_linux: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: file_selector_macos - sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" + sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" url: "https://pub.dev" source: hosted - version: "0.9.4+2" + version: "0.9.4+4" file_selector_platform_interface: dependency: transitive description: @@ -154,26 +154,26 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.0.0" flutter_pdfview: dependency: "direct main" description: name: flutter_pdfview - sha256: "2e3fa359524e9865ec25a64593b65092b4a9974c5871228c1a771300a003d150" + sha256: c402ad1f51ba8ea73b9fb04c003ca0a9286118ba5ac9787ee2aa58956b3fcf8a url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1+1" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "5a1e6fb2c0561958d7e4c33574674bda7b77caaca7a33b758876956f2902eea3" + sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 url: "https://pub.dev" source: hosted - version: "2.0.27" + version: "2.0.30" flutter_test: dependency: "direct dev" description: flutter @@ -300,10 +300,10 @@ packages: dependency: transitive description: name: http - sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.5.0" http_parser: dependency: transitive description: @@ -316,98 +316,98 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" + sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "8bd392ba8b0c8957a157ae0dc9fcf48c58e6c20908d5880aea1d79734df090e9" + sha256: a45bef33deb24839a51fb85a4d9e504ead2b1ad1c4779d02d09bf6a8857cdd52 url: "https://pub.dev" source: hosted - version: "0.8.12+22" + version: "0.8.13+2" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" + sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.0" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" + sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e url: "https://pub.dev" source: hosted - version: "0.8.12+2" + version: "0.8.13" image_picker_linux: dependency: transitive description: name: image_picker_linux - sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" + sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" url: "https://pub.dev" source: hosted - version: "0.2.1+2" + version: "0.2.2" image_picker_macos: dependency: transitive description: name: image_picker_macos - sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" + sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 url: "https://pub.dev" source: hosted - version: "0.2.1+2" + version: "0.2.2" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" + sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.11.0" image_picker_windows: dependency: transitive description: name: image_picker_windows - sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" + sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae url: "https://pub.dev" source: hosted - version: "0.2.1+1" + version: "0.2.2" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.8" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 url: "https://pub.dev" source: hosted - version: "5.1.1" + version: "6.0.0" matcher: dependency: transitive description: @@ -428,10 +428,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mime: dependency: transitive description: @@ -460,18 +460,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "0ca7359dad67fd7063cb2892ab0c0737b2daafd807cf1acecd62374c8fae6c12" + sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" url: "https://pub.dev" source: hosted - version: "2.2.16" + version: "2.2.18" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" path_provider_linux: dependency: transitive description: @@ -569,10 +569,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.7" typed_data: dependency: transitive description: @@ -585,18 +585,18 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: name: vm_service - sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "14.3.1" + version: "15.0.2" web: dependency: transitive description: @@ -614,5 +614,5 @@ packages: source: hosted version: "1.1.0" sdks: - dart: ">=3.7.0-0 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.9.0 <4.0.0" + flutter: ">=3.35.0" diff --git a/packages/example/pubspec.yaml b/packages/example/pubspec.yaml index 18f8471e..8ff9af6d 100644 --- a/packages/example/pubspec.yaml +++ b/packages/example/pubspec.yaml @@ -7,7 +7,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.15.0 <4.0.0" + sdk: '>=3.4.0 <4.0.0' + flutter: '>=3.22.0' dependencies: camera: ^0.11.1 @@ -16,7 +17,7 @@ dependencies: flutter: sdk: flutter flutter_pdfview: ^1.4.0 - image_picker: ^1.1.2 + image_picker: ^1.2.0 path: ^1.9.1 path_provider: ^2.1.5 @@ -58,7 +59,7 @@ dependency_overrides: path: ../google_mlkit_commons dev_dependencies: - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter_test: sdk: flutter diff --git a/packages/google_ml_kit/lib/src/vision.dart b/packages/google_ml_kit/lib/src/vision.dart index 93053cfd..991920a5 100644 --- a/packages/google_ml_kit/lib/src/vision.dart +++ b/packages/google_ml_kit/lib/src/vision.dart @@ -55,7 +55,8 @@ class Vision { /// Return an instance of [TextRecognizer]. @Deprecated( 'Use [google_mlkit_text_recognition] plugin instead of [google_ml_kit].') - TextRecognizer textRecognizer({script = TextRecognitionScript.latin}) { + TextRecognizer textRecognizer( + {TextRecognitionScript script = TextRecognitionScript.latin}) { return TextRecognizer(script: script); } diff --git a/packages/google_ml_kit/pubspec.yaml b/packages/google_ml_kit/pubspec.yaml index 064cd17b..89493457 100644 --- a/packages/google_ml_kit/pubspec.yaml +++ b/packages/google_ml_kit/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_ml_kit environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.8.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -33,4 +33,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 diff --git a/packages/google_mlkit_barcode_scanning/android/build.gradle b/packages/google_mlkit_barcode_scanning/android/build.gradle index c3d96250..f305510f 100644 --- a/packages/google_mlkit_barcode_scanning/android/build.gradle +++ b/packages/google_mlkit_barcode_scanning/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_barcode_scanning/pubspec.yaml b/packages/google_mlkit_barcode_scanning/pubspec.yaml index 2799296f..47e5e4de 100644 --- a/packages/google_mlkit_barcode_scanning/pubspec.yaml +++ b/packages/google_mlkit_barcode_scanning/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_barcode_scanning environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_commons/android/build.gradle b/packages/google_mlkit_commons/android/build.gradle index d4cc8de2..e72c8d0f 100644 --- a/packages/google_mlkit_commons/android/build.gradle +++ b/packages/google_mlkit_commons/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_commons/pubspec.yaml b/packages/google_mlkit_commons/pubspec.yaml index 636d5daf..4c4d5eed 100644 --- a/packages/google_mlkit_commons/pubspec.yaml +++ b/packages/google_mlkit_commons/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_commons environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md b/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md index a6d3b8df..3c96c051 100644 --- a/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md +++ b/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.14.2 +# Update Google's ML Kit Digital Ink Recognition to version 19 + ## 0.14.1 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_digital_ink_recognition/android/build.gradle b/packages/google_mlkit_digital_ink_recognition/android/build.gradle index 4addc374..d8e99072 100644 --- a/packages/google_mlkit_digital_ink_recognition/android/build.gradle +++ b/packages/google_mlkit_digital_ink_recognition/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } @@ -36,6 +36,6 @@ android { } dependencies { - implementation("com.google.mlkit:digital-ink-recognition:18.1.0") + implementation("com.google.mlkit:digital-ink-recognition:19.0.0") } } diff --git a/packages/google_mlkit_digital_ink_recognition/android/gradle/wrapper/gradle-wrapper.properties b/packages/google_mlkit_digital_ink_recognition/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..128196a7 --- /dev/null +++ b/packages/google_mlkit_digital_ink_recognition/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0-milestone-1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java b/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java index e100fe4c..ebd0a45c 100644 --- a/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java +++ b/packages/google_mlkit_digital_ink_recognition/android/src/main/java/com/google_mlkit_digital_ink_recognition/DigitalInkRecognizer.java @@ -3,15 +3,15 @@ import androidx.annotation.NonNull; import com.google.mlkit.common.MlKitException; -import com.google.mlkit.vision.digitalink.DigitalInkRecognition; -import com.google.mlkit.vision.digitalink.DigitalInkRecognitionModel; -import com.google.mlkit.vision.digitalink.DigitalInkRecognitionModelIdentifier; -import com.google.mlkit.vision.digitalink.DigitalInkRecognizerOptions; -import com.google.mlkit.vision.digitalink.Ink; -import com.google.mlkit.vision.digitalink.RecognitionCandidate; -import com.google.mlkit.vision.digitalink.RecognitionContext; -import com.google.mlkit.vision.digitalink.RecognitionResult; -import com.google.mlkit.vision.digitalink.WritingArea; +import com.google.mlkit.vision.digitalink.recognition.DigitalInkRecognition; +import com.google.mlkit.vision.digitalink.recognition.DigitalInkRecognitionModel; +import com.google.mlkit.vision.digitalink.recognition.DigitalInkRecognitionModelIdentifier; +import com.google.mlkit.vision.digitalink.recognition.DigitalInkRecognizerOptions; +import com.google.mlkit.vision.digitalink.recognition.Ink; +import com.google.mlkit.vision.digitalink.common.RecognitionCandidate; +import com.google.mlkit.vision.digitalink.recognition.RecognitionContext; +import com.google.mlkit.vision.digitalink.common.RecognitionResult; +import com.google.mlkit.vision.digitalink.recognition.WritingArea; import com.google_mlkit_commons.GenericModelManager; import java.util.ArrayList; @@ -27,7 +27,7 @@ public class DigitalInkRecognizer implements MethodChannel.MethodCallHandler { private static final String CLOSE = "vision#closeDigitalInkRecognizer"; private static final String MANAGE = "vision#manageInkModels"; - private final Map instances = new HashMap<>(); + private final Map instances = new HashMap<>(); private final GenericModelManager genericModelManager = new GenericModelManager(); @Override @@ -82,7 +82,7 @@ private void handleInkDetectionIfModelDownloaded( DigitalInkRecognitionModel model ) { String id = call.argument("id"); - com.google.mlkit.vision.digitalink.DigitalInkRecognizer recognizer = instances.get(id); + com.google.mlkit.vision.digitalink.recognition.DigitalInkRecognizer recognizer = instances.get(id); if (recognizer == null) { recognizer = DigitalInkRecognition.getClient(DigitalInkRecognizerOptions.builder(model).build()); instances.put(id, recognizer); @@ -159,7 +159,7 @@ private void process(RecognitionResult recognitionResult, final MethodChannel.Re private void closeDetector(MethodCall call) { String id = call.argument("id"); - com.google.mlkit.vision.digitalink.DigitalInkRecognizer recognizer = instances.get(id); + com.google.mlkit.vision.digitalink.recognition.DigitalInkRecognizer recognizer = instances.get(id); if (recognizer == null) return; recognizer.close(); diff --git a/packages/google_mlkit_digital_ink_recognition/pubspec.yaml b/packages/google_mlkit_digital_ink_recognition/pubspec.yaml index 063d5ece..89da751f 100644 --- a/packages/google_mlkit_digital_ink_recognition/pubspec.yaml +++ b/packages/google_mlkit_digital_ink_recognition/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_digital_ink_recognition environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_document_scanner/android/build.gradle b/packages/google_mlkit_document_scanner/android/build.gradle index 87887f8c..91147c2d 100644 --- a/packages/google_mlkit_document_scanner/android/build.gradle +++ b/packages/google_mlkit_document_scanner/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_document_scanner/pubspec.yaml b/packages/google_mlkit_document_scanner/pubspec.yaml index 7c40a9f7..ec912ace 100644 --- a/packages/google_mlkit_document_scanner/pubspec.yaml +++ b/packages/google_mlkit_document_scanner/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_document_scanner environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_entity_extraction/android/build.gradle b/packages/google_mlkit_entity_extraction/android/build.gradle index e378bb21..258e97c5 100644 --- a/packages/google_mlkit_entity_extraction/android/build.gradle +++ b/packages/google_mlkit_entity_extraction/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_entity_extraction/pubspec.yaml b/packages/google_mlkit_entity_extraction/pubspec.yaml index 766373ef..8fb877c6 100644 --- a/packages/google_mlkit_entity_extraction/pubspec.yaml +++ b/packages/google_mlkit_entity_extraction/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_entity_extraction environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_face_detection/android/build.gradle b/packages/google_mlkit_face_detection/android/build.gradle index 5627e2b8..76bf75e6 100644 --- a/packages/google_mlkit_face_detection/android/build.gradle +++ b/packages/google_mlkit_face_detection/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_face_detection/pubspec.yaml b/packages/google_mlkit_face_detection/pubspec.yaml index 2e08b2a6..8515c0f5 100644 --- a/packages/google_mlkit_face_detection/pubspec.yaml +++ b/packages/google_mlkit_face_detection/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_face_detection environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_face_mesh_detection/android/build.gradle b/packages/google_mlkit_face_mesh_detection/android/build.gradle index 8ae25ac6..e7016832 100644 --- a/packages/google_mlkit_face_mesh_detection/android/build.gradle +++ b/packages/google_mlkit_face_mesh_detection/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } @@ -36,6 +36,6 @@ android { } dependencies { - implementation("com.google.mlkit:face-mesh-detection:16.0.0-beta2") + implementation("com.google.mlkit:face-mesh-detection:16.0.0-beta3") } } diff --git a/packages/google_mlkit_face_mesh_detection/pubspec.yaml b/packages/google_mlkit_face_mesh_detection/pubspec.yaml index 35859743..881fc2dc 100644 --- a/packages/google_mlkit_face_mesh_detection/pubspec.yaml +++ b/packages/google_mlkit_face_mesh_detection/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_face_mesh_detection environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_image_labeling/android/build.gradle b/packages/google_mlkit_image_labeling/android/build.gradle index be893dea..4fb868e8 100644 --- a/packages/google_mlkit_image_labeling/android/build.gradle +++ b/packages/google_mlkit_image_labeling/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart b/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart index e5822356..4fc8d3ad 100644 --- a/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart +++ b/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart @@ -80,10 +80,7 @@ class LocalLabelerOptions extends ImageLabelerOptions { /// Constructor to create an instance of [LocalLabelerOptions]. LocalLabelerOptions( - {double confidenceThreshold = 0.5, - required this.modelPath, - this.maxCount = 10}) - : super(confidenceThreshold: confidenceThreshold); + {super.confidenceThreshold, required this.modelPath, this.maxCount = 10}); /// Returns a json representation of an instance of [LocalLabelerOptions]. @override @@ -110,10 +107,7 @@ class FirebaseLabelerOption extends ImageLabelerOptions { /// Constructor to create an instance of [FirebaseLabelerOption]. FirebaseLabelerOption( - {double confidenceThreshold = 0.5, - required this.modelName, - this.maxCount = 10}) - : super(confidenceThreshold: confidenceThreshold); + {super.confidenceThreshold, required this.modelName, this.maxCount = 10}); /// Returns a json representation of an instance of [FirebaseLabelerOption]. @override diff --git a/packages/google_mlkit_image_labeling/pubspec.yaml b/packages/google_mlkit_image_labeling/pubspec.yaml index 5f78b0ca..c70eefda 100644 --- a/packages/google_mlkit_image_labeling/pubspec.yaml +++ b/packages/google_mlkit_image_labeling/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_image_labeling environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_language_id/android/build.gradle b/packages/google_mlkit_language_id/android/build.gradle index 032328a8..48246bcb 100644 --- a/packages/google_mlkit_language_id/android/build.gradle +++ b/packages/google_mlkit_language_id/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_language_id/pubspec.yaml b/packages/google_mlkit_language_id/pubspec.yaml index 96bbc104..e067ef13 100644 --- a/packages/google_mlkit_language_id/pubspec.yaml +++ b/packages/google_mlkit_language_id/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_language_id environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_object_detection/android/build.gradle b/packages/google_mlkit_object_detection/android/build.gradle index 1076f32c..1da67cb4 100644 --- a/packages/google_mlkit_object_detection/android/build.gradle +++ b/packages/google_mlkit_object_detection/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_object_detection/lib/src/object_detector.dart b/packages/google_mlkit_object_detection/lib/src/object_detector.dart index 1c3c9429..2385e164 100644 --- a/packages/google_mlkit_object_detection/lib/src/object_detector.dart +++ b/packages/google_mlkit_object_detection/lib/src/object_detector.dart @@ -105,16 +105,12 @@ class LocalObjectDetectorOptions extends ObjectDetectorOptions { /// Constructor to create an instance of [LocalObjectDetectorOptions]. LocalObjectDetectorOptions( - {required DetectionMode mode, + {required super.mode, required this.modelPath, - required bool classifyObjects, - required bool multipleObjects, + required super.classifyObjects, + required super.multipleObjects, this.maximumLabelsPerObject = 10, - this.confidenceThreshold = 0.5}) - : super( - mode: mode, - classifyObjects: classifyObjects, - multipleObjects: multipleObjects); + this.confidenceThreshold = 0.5}); /// Returns a json representation of an instance of [LocalObjectDetectorOptions]. @override @@ -151,16 +147,12 @@ class FirebaseObjectDetectorOptions extends ObjectDetectorOptions { /// Constructor to create an instance of [FirebaseObjectDetectorOptions]. FirebaseObjectDetectorOptions( - {required DetectionMode mode, + {required super.mode, required this.modelName, - required bool classifyObjects, - required bool multipleObjects, + required super.classifyObjects, + required super.multipleObjects, this.maximumLabelsPerObject = 10, - this.confidenceThreshold = 0.5}) - : super( - mode: mode, - classifyObjects: classifyObjects, - multipleObjects: multipleObjects); + this.confidenceThreshold = 0.5}); /// Returns a json representation of an instance of [FirebaseObjectDetectorOptions]. @override diff --git a/packages/google_mlkit_object_detection/pubspec.yaml b/packages/google_mlkit_object_detection/pubspec.yaml index beb9b9ae..9582818b 100644 --- a/packages/google_mlkit_object_detection/pubspec.yaml +++ b/packages/google_mlkit_object_detection/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_object_detection environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_pose_detection/android/build.gradle b/packages/google_mlkit_pose_detection/android/build.gradle index 408af854..b96a2955 100644 --- a/packages/google_mlkit_pose_detection/android/build.gradle +++ b/packages/google_mlkit_pose_detection/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_pose_detection/pubspec.yaml b/packages/google_mlkit_pose_detection/pubspec.yaml index 9933aa65..3e3e7445 100644 --- a/packages/google_mlkit_pose_detection/pubspec.yaml +++ b/packages/google_mlkit_pose_detection/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_pose_detection environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_selfie_segmentation/android/build.gradle b/packages/google_mlkit_selfie_segmentation/android/build.gradle index 5b3f31ef..919212f1 100644 --- a/packages/google_mlkit_selfie_segmentation/android/build.gradle +++ b/packages/google_mlkit_selfie_segmentation/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_selfie_segmentation/pubspec.yaml b/packages/google_mlkit_selfie_segmentation/pubspec.yaml index 0979dabe..85e408a0 100644 --- a/packages/google_mlkit_selfie_segmentation/pubspec.yaml +++ b/packages/google_mlkit_selfie_segmentation/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_selfie_segmentation environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_smart_reply/android/build.gradle b/packages/google_mlkit_smart_reply/android/build.gradle index 5b7c06ff..812c883d 100644 --- a/packages/google_mlkit_smart_reply/android/build.gradle +++ b/packages/google_mlkit_smart_reply/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_smart_reply/pubspec.yaml b/packages/google_mlkit_smart_reply/pubspec.yaml index 466202e8..0d7f2fd0 100644 --- a/packages/google_mlkit_smart_reply/pubspec.yaml +++ b/packages/google_mlkit_smart_reply/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_smart_reply environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_subject_segmentation/android/build.gradle b/packages/google_mlkit_subject_segmentation/android/build.gradle index 1564690e..ce6791b0 100644 --- a/packages/google_mlkit_subject_segmentation/android/build.gradle +++ b/packages/google_mlkit_subject_segmentation/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_subject_segmentation/pubspec.yaml b/packages/google_mlkit_subject_segmentation/pubspec.yaml index 465f922f..0c0a50af 100644 --- a/packages/google_mlkit_subject_segmentation/pubspec.yaml +++ b/packages/google_mlkit_subject_segmentation/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_subject_segmentation environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_text_recognition/android/build.gradle b/packages/google_mlkit_text_recognition/android/build.gradle index 8cedd38e..a3920972 100644 --- a/packages/google_mlkit_text_recognition/android/build.gradle +++ b/packages/google_mlkit_text_recognition/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_text_recognition/pubspec.yaml b/packages/google_mlkit_text_recognition/pubspec.yaml index 52e803f0..2ebbb97b 100644 --- a/packages/google_mlkit_text_recognition/pubspec.yaml +++ b/packages/google_mlkit_text_recognition/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_text_recognition environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: diff --git a/packages/google_mlkit_translation/android/build.gradle b/packages/google_mlkit_translation/android/build.gradle index 532ee4ef..ce0c92a7 100644 --- a/packages/google_mlkit_translation/android/build.gradle +++ b/packages/google_mlkit_translation/android/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("com.android.tools.build:gradle:8.7.0") + classpath("com.android.tools.build:gradle:8.13.0") } } diff --git a/packages/google_mlkit_translation/pubspec.yaml b/packages/google_mlkit_translation/pubspec.yaml index 021fc806..6b7725c7 100644 --- a/packages/google_mlkit_translation/pubspec.yaml +++ b/packages/google_mlkit_translation/pubspec.yaml @@ -5,8 +5,8 @@ homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_translation environment: - sdk: ">=2.16.0 <4.0.0" - flutter: ">=2.5.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: plugin: From 59a991327fde88712e9e1bcbf0e4c88ca585c4ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 13:28:12 -0800 Subject: [PATCH 09/39] chore(deps): bump actions/checkout from 5.0.0 to 6.0.2 (#836) Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5.0.0...v6.0.2) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/code-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index 474beeda..f51b2030 100644 --- a/.github/workflows/code-analysis.yml +++ b/.github/workflows/code-analysis.yml @@ -17,7 +17,7 @@ jobs: runs-on: macos-latest steps: - - uses: actions/checkout@v5.0.0 + - uses: actions/checkout@v6.0.2 - uses: actions/setup-java@v4.7.1 with: java-version: 11 From cda114574d723a6d59be47e3dc39b8ba611e6ffb Mon Sep 17 00:00:00 2001 From: Benson Arafat Date: Tue, 3 Feb 2026 22:29:59 +0100 Subject: [PATCH 10/39] chore: Update Document Scanner to use latest dependency (#834) --- README.md | 2 +- .../document_scanner_view.dart | 149 ++++++++---------- .../google_mlkit_document_scanner/README.md | 9 +- .../android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 7 + .../DocumentScanner.java | 40 +++-- .../lib/src/document_scanner.dart | 8 +- 7 files changed, 118 insertions(+), 99 deletions(-) create mode 100644 packages/google_mlkit_document_scanner/android/gradle/wrapper/gradle-wrapper.properties diff --git a/README.md b/README.md index 8e097a7f..86251ae1 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Google's ML Kit for Flutter is a set of [Flutter plugins](https://flutter.io/pla | [Pose Detection (Beta)](https://developers.google.com/ml-kit/vision/pose-detection) | [google_mlkit_pose_detection](https://pub.dev/packages/google_mlkit_pose_detection) [![Pub Version](https://img.shields.io/pub/v/google_mlkit_pose_detection)](https://pub.dev/packages/google_mlkit_pose_detection) | [![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_pose_detection) | ✅ | ✅ | | [Selfie Segmentation (Beta)](https://developers.google.com/ml-kit/vision/selfie-segmentation) | [google_mlkit_selfie_segmentation](https://pub.dev/packages/google_mlkit_selfie_segmentation) [![Pub Version](https://img.shields.io/pub/v/google_mlkit_selfie_segmentation)](https://pub.dev/packages/google_mlkit_selfie_segmentation) | [![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_selfie_segmentation) | ✅ | ✅ | | [Subject Segmentation (Beta)](https://developers.google.com/ml-kit/vision/subject-segmentation) | [google_mlkit_subject_segmentation](https://pub.dev/packages/google_mlkit_subject_segmentation) [![Pub Version](https://img.shields.io/pub/v/google_mlkit_subject_segmentation)](https://pub.dev/packages/google_mlkit_subject_segmentation) | [![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_subject_segmentation) | ✅ | ❌ | -| [Document Scanner (Beta)](https://developers.google.com/ml-kit/vision/doc-scanner) | [google_mlkit_document_scanner](https://pub.dev/packages/google_mlkit_document_scanner) [![Pub Version](https://img.shields.io/pub/v/google_mlkit_document_scanner)](https://pub.dev/packages/google_mlkit_document_scanner) | [![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_document_scanner) | ✅ | ❌ | +| [Document Scanner](https://developers.google.com/ml-kit/vision/doc-scanner) | [google_mlkit_document_scanner](https://pub.dev/packages/google_mlkit_document_scanner) [![Pub Version](https://img.shields.io/pub/v/google_mlkit_document_scanner)](https://pub.dev/packages/google_mlkit_document_scanner) | [![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_document_scanner) | ✅ | ❌ | ### Natural Language APIs diff --git a/packages/example/lib/vision_detector_views/document_scanner_view.dart b/packages/example/lib/vision_detector_views/document_scanner_view.dart index 3eec7b17..2fc16694 100644 --- a/packages/example/lib/vision_detector_views/document_scanner_view.dart +++ b/packages/example/lib/vision_detector_views/document_scanner_view.dart @@ -1,9 +1,13 @@ +import 'dart:collection'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_pdfview/flutter_pdfview.dart'; import 'package:google_mlkit_document_scanner/google_mlkit_document_scanner.dart'; +typedef MenuEntry = DropdownMenuEntry; +const List list = ['Select option', 'pdf', 'jpeg', 'pdf-jpeg']; + class DocumentScannerView extends StatefulWidget { @override State createState() => _DocumentScannerViewState(); @@ -12,7 +16,11 @@ class DocumentScannerView extends StatefulWidget { class _DocumentScannerViewState extends State { DocumentScanner? _documentScanner; DocumentScanningResult? _result; - + static final List menuEntries = UnmodifiableListView( + list.map((String name) => MenuEntry( + value: name, + label: + name == 'Select option' ? name : 'Scan ${name.toUpperCase()}'))); @override void dispose() { _documentScanner?.close(); @@ -27,103 +35,84 @@ class _DocumentScannerViewState extends State { centerTitle: true, elevation: 0, ), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.document_scanner_outlined, - size: 50, - ), - SizedBox(width: 8), - ElevatedButton( - style: ButtonStyle( - backgroundColor: - WidgetStateProperty.all(Colors.black), - shape: WidgetStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8), - ), - ), - ), - onPressed: () => startScan(DocumentFormat.pdf), - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 4), - child: const Text( - 'Scan PDF', - style: TextStyle(color: Colors.white), - ), + body: SingleChildScrollView( + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.document_scanner_outlined, + size: 50, ), + SizedBox(width: 8), + DropdownMenu( + initialSelection: list.first, + onSelected: (String? value) { + if (value != null) { + if (value == 'pdf') { + startScan({DocumentFormat.pdf}); + } + if (value == 'jpeg') { + startScan({DocumentFormat.jpeg}); + } + if (value == 'pdf-jpeg') { + startScan( + {DocumentFormat.pdf, DocumentFormat.jpeg}); + } + } + }, + dropdownMenuEntries: menuEntries), + ], + ), + if (_result?.pdf != null) ...[ + Padding( + padding: const EdgeInsets.only( + top: 16, bottom: 8, right: 8, left: 8), + child: Align( + alignment: Alignment.centerLeft, + child: Text('PDF Document:')), ), - SizedBox(width: 8), - ElevatedButton( - style: ButtonStyle( - backgroundColor: - WidgetStateProperty.all(Colors.black), - shape: WidgetStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8), - ), - ), - ), - onPressed: () => startScan(DocumentFormat.jpeg), - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 4), - child: const Text( - 'Scan JPEG', - style: TextStyle(color: Colors.white), - ), + SizedBox( + height: 300, + child: PDFView( + filePath: _result!.pdf!.uri, + enableSwipe: true, + swipeHorizontal: true, + autoSpacing: false, + pageFling: false, ), ), ], - ), - if (_result?.pdf != null) ...[ - Padding( - padding: const EdgeInsets.only( - top: 16, bottom: 8, right: 8, left: 8), - child: Align( - alignment: Alignment.centerLeft, - child: Text('PDF Document:')), - ), - SizedBox( - height: 300, - child: PDFView( - filePath: _result!.pdf!.uri, - enableSwipe: true, - swipeHorizontal: true, - autoSpacing: false, - pageFling: false, + if (_result?.images?.isNotEmpty == true) ...[ + Padding( + padding: const EdgeInsets.only( + top: 16, bottom: 8, right: 8, left: 8), + child: Align( + alignment: Alignment.centerLeft, + child: Text('Images [0]:')), ), - ), - ], - if (_result?.images.isNotEmpty == true) ...[ - Padding( - padding: const EdgeInsets.only( - top: 16, bottom: 8, right: 8, left: 8), - child: Align( - alignment: Alignment.centerLeft, - child: Text('Images [0]:')), - ), - SizedBox( - height: 400, child: Image.file(File(_result!.images.first))), + SizedBox( + height: 400, + child: Image.file(File(_result!.images!.first))), + ], ], - ], + ), ), ), ); } - void startScan(DocumentFormat format) async { + void startScan(Set formats) async { try { _result = null; setState(() {}); _documentScanner?.close(); _documentScanner = DocumentScanner( options: DocumentScannerOptions( - documentFormat: format, + documentFormats: formats, mode: ScannerMode.full, isGalleryImport: false, pageLimit: 1, diff --git a/packages/google_mlkit_document_scanner/README.md b/packages/google_mlkit_document_scanner/README.md index b2d1140b..51140978 100644 --- a/packages/google_mlkit_document_scanner/README.md +++ b/packages/google_mlkit_document_scanner/README.md @@ -55,7 +55,7 @@ The document scanner API provides a high-quality fully fledged UI flow that is c ### iOS -This feature is still in Beta, and it is only available for Android. Stay tune for updates in [Google's website](https://developers.google.com/ml-kit/vision/doc-scanner) and request the feature [here](https://github.com/googlesamples/mlkit/issues). +This feature is only available for Android. Stay tune for updates in [Google's website](https://developers.google.com/ml-kit/vision/doc-scanner) and request the feature [here](https://github.com/googlesamples/mlkit/issues). ### Android @@ -70,8 +70,13 @@ This feature is still in Beta, and it is only available for Android. Stay tune f #### Create an instance of `DocumentScannerOptions` ```dart +// set output document formats +const Set documentFormats = { + DocumentFormat.jpeg, + DocumentFormat.pdf +}; DocumentScannerOptions documentOptions = DocumentScannerOptions( - documentFormat: DocumentFormat.jpeg, // set output document format + documentFormats: documentFormats, mode: ScannerMode.filter, // to control what features are enabled pageLimit: 1, // setting a limit to the number of pages scanned isGalleryImport: true, // importing from the photo gallery diff --git a/packages/google_mlkit_document_scanner/android/build.gradle b/packages/google_mlkit_document_scanner/android/build.gradle index 91147c2d..8264c2d4 100644 --- a/packages/google_mlkit_document_scanner/android/build.gradle +++ b/packages/google_mlkit_document_scanner/android/build.gradle @@ -36,6 +36,6 @@ android { } dependencies { - implementation("com.google.android.gms:play-services-mlkit-document-scanner:16.0.0-beta1") + implementation("com.google.android.gms:play-services-mlkit-document-scanner:16.0.0") } } diff --git a/packages/google_mlkit_document_scanner/android/gradle/wrapper/gradle-wrapper.properties b/packages/google_mlkit_document_scanner/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..128196a7 --- /dev/null +++ b/packages/google_mlkit_document_scanner/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0-milestone-1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/packages/google_mlkit_document_scanner/android/src/main/java/com/google_mlkit_document_scanner/DocumentScanner.java b/packages/google_mlkit_document_scanner/android/src/main/java/com/google_mlkit_document_scanner/DocumentScanner.java index 7b84f182..2720b220 100644 --- a/packages/google_mlkit_document_scanner/android/src/main/java/com/google_mlkit_document_scanner/DocumentScanner.java +++ b/packages/google_mlkit_document_scanner/android/src/main/java/com/google_mlkit_document_scanner/DocumentScanner.java @@ -95,17 +95,21 @@ public void onFailure(@NonNull Exception e) { private GmsDocumentScannerOptions parseOptions(Map options) { boolean isGalleryImportAllowed = (boolean) options.get("isGalleryImport"); int pageLimit = (int) options.get("pageLimit"); - int format; - switch ((String) Objects.requireNonNull(options.get("format"))) { - case "pdf": - format = GmsDocumentScannerOptions.RESULT_FORMAT_PDF; - break; - case "jpeg": - format = GmsDocumentScannerOptions.RESULT_FORMAT_JPEG; - break; - default: - throw new IllegalArgumentException("Not a format:" + options.get("format")); + List formatStrings = (List) options.get("formats"); + List formatConstants = new ArrayList<>(); + for (String format: formatStrings) { + switch (format) { + case "pdf": + formatConstants.add(GmsDocumentScannerOptions.RESULT_FORMAT_PDF); + break; + case "jpeg": + formatConstants.add(GmsDocumentScannerOptions.RESULT_FORMAT_JPEG); + break; + default: + throw new IllegalArgumentException("Not a format:" + options.get("format")); + } } + int mode; switch ((String) options.get("mode")) { case "base": @@ -120,7 +124,21 @@ private GmsDocumentScannerOptions parseOptions(Map options) { default: throw new IllegalArgumentException("Not a mode:" + options.get("mode")); } - GmsDocumentScannerOptions.Builder builder = new GmsDocumentScannerOptions.Builder().setGalleryImportAllowed(isGalleryImportAllowed).setPageLimit(pageLimit).setResultFormats(format).setScannerMode(mode); + GmsDocumentScannerOptions.Builder builder = new GmsDocumentScannerOptions + .Builder() + .setGalleryImportAllowed(isGalleryImportAllowed) + .setPageLimit(pageLimit) + .setScannerMode(mode); + + // Set formats + if (!formatConstants.isEmpty()) { + if(formatConstants.size() > 1) { + builder.setResultFormats(formatConstants.get(0), formatConstants.get(1)); + } else { + builder.setResultFormats(formatConstants.get(0)); + } + + } return builder.build(); } diff --git a/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart b/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart index 1a6a501a..911b3765 100644 --- a/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart +++ b/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart @@ -35,7 +35,7 @@ class DocumentScanner { class DocumentScannerOptions { /// Constructor for [DocumentScannerOptions]. DocumentScannerOptions({ - this.documentFormat = DocumentFormat.jpeg, + this.documentFormats = const {DocumentFormat.jpeg}, this.pageLimit = 1, this.mode = ScannerMode.full, this.isGalleryImport = false, @@ -46,7 +46,7 @@ class DocumentScannerOptions { /// Sets scanner result formats. /// Available formats: PDF, JPG and default format is JPG. - final DocumentFormat documentFormat; + final Set documentFormats; /// Sets the scanner mode which determines what features are enabled. default = ScannerModel.full. final ScannerMode mode; @@ -57,7 +57,7 @@ class DocumentScannerOptions { /// Returns a json representation of an instance of [DocumentScannerOptions]. Map toJson() => { 'pageLimit': pageLimit, - 'format': documentFormat.name, + 'formats': documentFormats.map((f) => f.name).toList(), 'mode': mode.name, 'isGalleryImport': isGalleryImport, }; @@ -82,7 +82,7 @@ class DocumentScanningResult { final DocumentScanningResultPdf? pdf; /// Returns the scanned images or null if `DocumentFormat.jpeg` was not specified when creating the scanner options. - final List images; + final List? images; /// Constructor to create an instance of [DocumentScanningResult]. DocumentScanningResult({required this.pdf, required this.images}); From 9644d0a242f6ac54195c9bf770746bab9c85f2f7 Mon Sep 17 00:00:00 2001 From: Benson Arafat Date: Tue, 3 Feb 2026 22:49:40 +0100 Subject: [PATCH 11/39] chore: Update project (#838) --- .gitignore | 6 +- .vscode/launch.json | 28 + CHANGELOG.md | 123 +++++ packages/example/android/app/build.gradle.kts | 8 +- packages/example/ios/.gitignore | 1 + .../ios/Flutter/AppFrameworkInfo.plist | 2 +- packages/example/ios/Flutter/Debug.xcconfig | 1 + .../ios/Flutter/Local.xcconfig.example | 8 + packages/example/ios/Flutter/Profile.xcconfig | 3 + packages/example/ios/Flutter/Release.xcconfig | 1 + packages/example/ios/Podfile | 8 +- packages/example/ios/Podfile.lock | 487 +++++++++--------- .../ios/Runner.xcodeproj/project.pbxproj | 37 +- .../xcshareddata/xcschemes/Runner.xcscheme | 20 + packages/example/ios/Runner/Info.plist | 4 +- packages/example/pubspec.lock | 136 ++--- packages/example/pubspec.yaml | 3 +- packages/google_ml_kit/CHANGELOG.md | 5 + .../lib/src/natural_language.dart | 23 +- packages/google_ml_kit/lib/src/vision.dart | 39 +- packages/google_ml_kit/pubspec.yaml | 34 +- .../CHANGELOG.md | 5 + .../ios/google_mlkit_barcode_scanning.podspec | 2 +- .../lib/src/barcode_scanner.dart | 53 +- .../pubspec.yaml | 6 +- packages/google_mlkit_commons/CHANGELOG.md | 5 + .../ios/google_mlkit_commons.podspec | 2 +- .../lib/src/input_image.dart | 55 +- .../lib/src/model_manager.dart | 2 +- packages/google_mlkit_commons/pubspec.yaml | 6 +- .../CHANGELOG.md | 4 +- ...ogle_mlkit_digital_ink_recognition.podspec | 2 +- .../lib/src/digital_ink_recognizer.dart | 58 +-- .../pubspec.yaml | 6 +- .../CHANGELOG.md | 5 + .../lib/src/document_scanner.dart | 37 +- .../pubspec.yaml | 6 +- .../CHANGELOG.md | 5 + .../google_mlkit_entity_extraction.podspec | 2 +- .../lib/src/entity_extractor.dart | 145 ++++-- .../pubspec.yaml | 6 +- .../google_mlkit_face_detection/CHANGELOG.md | 5 + .../ios/google_mlkit_face_detection.podspec | 2 +- .../lib/src/face_detector.dart | 118 +++-- .../google_mlkit_face_detection/pubspec.yaml | 6 +- .../CHANGELOG.md | 5 + .../lib/src/face_mesh_detector.dart | 96 ++-- .../pubspec.yaml | 6 +- .../google_mlkit_image_labeling/CHANGELOG.md | 7 + .../ios/google_mlkit_image_labeling.podspec | 4 +- .../lib/src/image_labeler.dart | 85 +-- .../google_mlkit_image_labeling/pubspec.yaml | 6 +- .../google_mlkit_language_id/CHANGELOG.md | 5 + .../ios/google_mlkit_language_id.podspec | 2 +- .../lib/src/language_identifier.dart | 28 +- .../google_mlkit_language_id/pubspec.yaml | 6 +- .../CHANGELOG.md | 7 + .../ios/google_mlkit_object_detection.podspec | 4 +- .../lib/src/object_detector.dart | 133 ++--- .../pubspec.yaml | 6 +- .../google_mlkit_pose_detection/CHANGELOG.md | 7 + .../ios/google_mlkit_pose_detection.podspec | 4 +- .../lib/src/pose_detector.dart | 31 +- .../google_mlkit_pose_detection/pubspec.yaml | 6 +- .../CHANGELOG.md | 5 + .../google_mlkit_selfie_segmentation.podspec | 2 +- .../lib/src/selfie_segmenter.dart | 15 +- .../pubspec.yaml | 6 +- .../google_mlkit_smart_reply/CHANGELOG.md | 5 + .../ios/google_mlkit_smart_reply.podspec | 2 +- .../lib/src/smart_reply.dart | 60 ++- .../google_mlkit_smart_reply/pubspec.yaml | 6 +- .../CHANGELOG.md | 5 + .../lib/src/subject_segmenter.dart | 52 +- .../pubspec.yaml | 6 +- .../CHANGELOG.md | 7 + .../google_mlkit_text_recognition/README.md | 16 +- .../ios/google_mlkit_text_recognition.podspec | 2 +- .../lib/src/text_recognizer.dart | 45 +- .../pubspec.yaml | 6 +- .../google_mlkit_translation/CHANGELOG.md | 5 + .../ios/google_mlkit_translation.podspec | 2 +- .../lib/src/on_device_translator.dart | 33 +- .../google_mlkit_translation/pubspec.yaml | 6 +- analyze.sh => scripts/analyze.sh | 2 + publish.sh => scripts/publish.sh | 1 + update_libs.sh => scripts/update_libs.sh | 7 +- 87 files changed, 1316 insertions(+), 948 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 packages/example/ios/Flutter/Local.xcconfig.example create mode 100644 packages/example/ios/Flutter/Profile.xcconfig rename analyze.sh => scripts/analyze.sh (72%) rename publish.sh => scripts/publish.sh (97%) rename update_libs.sh => scripts/update_libs.sh (86%) diff --git a/.gitignore b/.gitignore index db4c0bfb..f03e6ffb 100644 --- a/.gitignore +++ b/.gitignore @@ -18,11 +18,6 @@ # Visual Studio Code related .vs/ -.vscode/ -.vscode -.vscode/* -!.vscode/tasks.json -!.vscode/settings.json .melos_tool/* @@ -65,6 +60,7 @@ example/android/app/google-services.json **/ios/Flutter/App.framework **/ios/Flutter/Flutter.framework **/ios/Flutter/Generated.xcconfig +**/ios/Flutter/Local.xcconfig **/ios/Flutter/app.flx **/ios/Flutter/app.zip **/ios/Flutter/flutter_assets/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..da673a92 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,28 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Flutter (Example App)", + "request": "launch", + "type": "dart", + "program": "${workspaceFolder}/packages/example/lib/main.dart", + "cwd": "${workspaceFolder}/packages/example" + }, + { + "name": "Flutter (Example App - Profile)", + "request": "launch", + "type": "dart", + "flutterMode": "profile", + "program": "${workspaceFolder}/packages/example/lib/main.dart", + "cwd": "${workspaceFolder}/packages/example" + }, + { + "name": "Flutter (Example App - Release)", + "request": "launch", + "type": "dart", + "flutterMode": "release", + "program": "${workspaceFolder}/packages/example/lib/main.dart", + "cwd": "${workspaceFolder}/packages/example" + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index d2f58b9f..8aecb988 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,129 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2026-02-03 + +### Changes + +--- + +Packages with changes: + +- [`google_ml_kit` - `v0.20.1`](#google_ml_kit---v0201) +- [`google_mlkit_barcode_scanning` - `v0.14.2`](#google_mlkit_barcode_scanning---v0142) +- [`google_mlkit_commons` - `v0.11.1`](#google_mlkit_commons---v0111) +- [`google_mlkit_digital_ink_recognition` - `v0.14.2`](#google_mlkit_digital_ink_recognition---v0142) +- [`google_mlkit_document_scanner` - `v0.4.1`](#google_mlkit_document_scanner---v041) +- [`google_mlkit_entity_extraction` - `v0.15.3`](#google_mlkit_entity_extraction---v0153) +- [`google_mlkit_face_detection` - `v0.13.2`](#google_mlkit_face_detection---v0132) +- [`google_mlkit_face_mesh_detection` - `v0.4.2`](#google_mlkit_face_mesh_detection---v042) +- [`google_mlkit_image_labeling` - `v0.14.2`](#google_mlkit_image_labeling---v0142) +- [`google_mlkit_language_id` - `v0.13.1`](#google_mlkit_language_id---v0131) +- [`google_mlkit_object_detection` - `v0.15.1`](#google_mlkit_object_detection---v0151) +- [`google_mlkit_pose_detection` - `v0.14.1`](#google_mlkit_pose_detection---v0141) +- [`google_mlkit_selfie_segmentation` - `v0.10.1`](#google_mlkit_selfie_segmentation---v0101) +- [`google_mlkit_smart_reply` - `v0.13.1`](#google_mlkit_smart_reply---v0131) +- [`google_mlkit_subject_segmentation` - `v0.0.3`](#google_mlkit_subject_segmentation---v003) +- [`google_mlkit_text_recognition` - `v0.15.1`](#google_mlkit_text_recognition---v0151) +- [`google_mlkit_translation` - `v0.13.1`](#google_mlkit_translation---v0131) + +--- + +#### `google_ml_kit` - `v0.20.1` + +* Update all native dependencies to latest versions +* See individual package changelogs for specific version updates + +#### `google_mlkit_barcode_scanning` - `v0.14.2` + +* Update Android native library `com.google.mlkit:barcode-scanning` to 17.3.0 +* Update iOS native library `GoogleMLKit/BarcodeScanning` to 9.0.0 + +#### `google_mlkit_commons` - `v0.11.1` + +* Update Android native library `com.google.mlkit:vision-common` to 17.3.0 +* Update iOS native library `MLKitVision` to 10.0.0 + +#### `google_mlkit_digital_ink_recognition` - `v0.14.2` + +* Update Android native library `com.google.mlkit:digital-ink-recognition` to 19.0.0 +* Update iOS native library `GoogleMLKit/DigitalInkRecognition` to 9.0.0 + +#### `google_mlkit_document_scanner` - `v0.4.1` + +* Update Android native library `com.google.android.gms:play-services-mlkit-document-scanner` to 16.0.0 +* Note: iOS support is not available + +#### `google_mlkit_entity_extraction` - `v0.15.3` + +* Update Android native library `com.google.mlkit:entity-extraction` to 16.0.0-beta6 +* Update iOS native library `GoogleMLKit/EntityExtraction` to 9.0.0 + +#### `google_mlkit_face_detection` - `v0.13.2` + +* Update Android native library `com.google.mlkit:face-detection` to 16.1.7 +* Update iOS native library `GoogleMLKit/FaceDetection` to 9.0.0 + +#### `google_mlkit_face_mesh_detection` - `v0.4.2` + +* Update Android native library `com.google.mlkit:face-mesh-detection` to 16.0.0-beta3 +* Update iOS native library `GoogleMLKit/FaceMeshDetection` to 9.0.0 (Note: iOS support is not available) + +#### `google_mlkit_image_labeling` - `v0.14.2` + +* Update Android native library `com.google.mlkit:image-labeling` to 17.0.9 +* Update Android native library `com.google.mlkit:image-labeling-custom` to 17.0.3 +* Update iOS native library `GoogleMLKit/ImageLabeling` to 9.0.0 +* Update iOS native library `GoogleMLKit/ImageLabelingCustom` to 9.0.0 + +#### `google_mlkit_language_id` - `v0.13.1` + +* Update Android native library `com.google.mlkit:language-id` to 17.0.6 +* Update iOS native library `GoogleMLKit/LanguageID` to 9.0.0 + +#### `google_mlkit_object_detection` - `v0.15.1` + +* Update Android native library `com.google.mlkit:object-detection` to 17.0.2 +* Update Android native library `com.google.mlkit:object-detection-custom` to 17.0.2 +* Update iOS native library `GoogleMLKit/ObjectDetection` to 9.0.0 +* Update iOS native library `GoogleMLKit/ObjectDetectionCustom` to 9.0.0 + +#### `google_mlkit_pose_detection` - `v0.14.1` + +* Update Android native library `com.google.mlkit:pose-detection` to 18.0.0-beta5 +* Update Android native library `com.google.mlkit:pose-detection-accurate` to 18.0.0-beta5 +* Update iOS native library `GoogleMLKit/PoseDetection` to 9.0.0 +* Update iOS native library `GoogleMLKit/PoseDetectionAccurate` to 9.0.0 + +#### `google_mlkit_selfie_segmentation` - `v0.10.1` + +* Update Android native library `com.google.mlkit:segmentation-selfie` to 16.0.0-beta6 +* Update iOS native library `GoogleMLKit/SegmentationSelfie` to 9.0.0 + +#### `google_mlkit_smart_reply` - `v0.13.1` + +* Update Android native library `com.google.mlkit:smart-reply` to 17.0.4 +* Update iOS native library `GoogleMLKit/SmartReply` to 9.0.0 + +#### `google_mlkit_subject_segmentation` - `v0.0.3` + +* Update Android native library `com.google.android.gms:play-services-mlkit-subject-segmentation` to 16.0.0-beta1 +* Note: iOS support is not available + +#### `google_mlkit_text_recognition` - `v0.15.1` + +* Update Android native library `com.google.mlkit:text-recognition` to 16.0.1 +* Update Android native libraries `text-recognition-chinese`, `text-recognition-devanagari`, `text-recognition-japanese`, `text-recognition-korean` to 16.0.1 +* Update iOS native library `GoogleMLKit/TextRecognition` to 9.0.0 +* Update iOS native libraries `GoogleMLKit/TextRecognitionChinese`, `GoogleMLKit/TextRecognitionDevanagari`, `GoogleMLKit/TextRecognitionJapanese`, `GoogleMLKit/TextRecognitionKorean` to 9.0.0 + +#### `google_mlkit_translation` - `v0.13.1` + +* Update Android native library `com.google.mlkit:translate` to 17.0.3 +* Update iOS native library `GoogleMLKit/Translate` to 9.0.0 + +--- + ## 2025-03-20 ### Changes diff --git a/packages/example/android/app/build.gradle.kts b/packages/example/android/app/build.gradle.kts index dad00d73..e5d47560 100644 --- a/packages/example/android/app/build.gradle.kts +++ b/packages/example/android/app/build.gradle.kts @@ -39,10 +39,10 @@ android { dependencies { // Add language package you need to use - implementation("com.google.mlkit:text-recognition-chinese:16.0.0") - implementation("com.google.mlkit:text-recognition-devanagari:16.0.0") - implementation("com.google.mlkit:text-recognition-japanese:16.0.0") - implementation("com.google.mlkit:text-recognition-korean:16.0.0") + implementation("com.google.mlkit:text-recognition-chinese:16.0.1") + implementation("com.google.mlkit:text-recognition-devanagari:16.0.1") + implementation("com.google.mlkit:text-recognition-japanese:16.0.1") + implementation("com.google.mlkit:text-recognition-korean:16.0.1") } flutter { diff --git a/packages/example/ios/.gitignore b/packages/example/ios/.gitignore index 7a7f9873..eebb3980 100644 --- a/packages/example/ios/.gitignore +++ b/packages/example/ios/.gitignore @@ -19,6 +19,7 @@ Flutter/App.framework Flutter/Flutter.framework Flutter/Flutter.podspec Flutter/Generated.xcconfig +Flutter/Local.xcconfig Flutter/ephemeral/ Flutter/app.flx Flutter/app.zip diff --git a/packages/example/ios/Flutter/AppFrameworkInfo.plist b/packages/example/ios/Flutter/AppFrameworkInfo.plist index 7c569640..1dc6cf76 100644 --- a/packages/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/packages/example/ios/Flutter/Debug.xcconfig b/packages/example/ios/Flutter/Debug.xcconfig index ec97fc6f..30fbdc86 100644 --- a/packages/example/ios/Flutter/Debug.xcconfig +++ b/packages/example/ios/Flutter/Debug.xcconfig @@ -1,2 +1,3 @@ #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" +#include? "Local.xcconfig" diff --git a/packages/example/ios/Flutter/Local.xcconfig.example b/packages/example/ios/Flutter/Local.xcconfig.example new file mode 100644 index 00000000..1f19ac5d --- /dev/null +++ b/packages/example/ios/Flutter/Local.xcconfig.example @@ -0,0 +1,8 @@ +// Copy this file to Local.xcconfig and fill in your values +// Local.xcconfig is gitignored and will not be committed + +// Your Apple Developer Team ID (found in https://developer.apple.com/account) +DEVELOPMENT_TEAM = YOUR_TEAM_ID_HERE + +// Your app's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.google.ml.kit.flutter.example diff --git a/packages/example/ios/Flutter/Profile.xcconfig b/packages/example/ios/Flutter/Profile.xcconfig new file mode 100644 index 00000000..40cd22dd --- /dev/null +++ b/packages/example/ios/Flutter/Profile.xcconfig @@ -0,0 +1,3 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig" +#include "Generated.xcconfig" +#include? "Local.xcconfig" diff --git a/packages/example/ios/Flutter/Release.xcconfig b/packages/example/ios/Flutter/Release.xcconfig index c4855bfe..b9c6fb7f 100644 --- a/packages/example/ios/Flutter/Release.xcconfig +++ b/packages/example/ios/Flutter/Release.xcconfig @@ -1,2 +1,3 @@ #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" +#include? "Local.xcconfig" diff --git a/packages/example/ios/Podfile b/packages/example/ios/Podfile index 6edd3374..9f0d4515 100644 --- a/packages/example/ios/Podfile +++ b/packages/example/ios/Podfile @@ -28,10 +28,10 @@ flutter_ios_podfile_setup target 'Runner' do # Add language package you need to use - pod 'GoogleMLKit/TextRecognitionChinese', '~> 7.0.0' - pod 'GoogleMLKit/TextRecognitionDevanagari', '~> 7.0.0' - pod 'GoogleMLKit/TextRecognitionJapanese', '~> 7.0.0' - pod 'GoogleMLKit/TextRecognitionKorean', '~> 7.0.0' + pod 'GoogleMLKit/TextRecognitionChinese', '~> 9.0.0' + pod 'GoogleMLKit/TextRecognitionDevanagari', '~> 9.0.0' + pod 'GoogleMLKit/TextRecognitionJapanese', '~> 9.0.0' + pod 'GoogleMLKit/TextRecognitionKorean', '~> 9.0.0' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end diff --git a/packages/example/ios/Podfile.lock b/packages/example/ios/Podfile.lock index f195df8b..4770e48c 100644 --- a/packages/example/ios/Podfile.lock +++ b/packages/example/ios/Podfile.lock @@ -1,132 +1,128 @@ PODS: - - camera_avfoundation (0.0.1): - - Flutter - Flutter (1.0.0) - - flutter_pdfview (1.0.2): - - Flutter - - google_mlkit_barcode_scanning (0.14.1): + - google_mlkit_barcode_scanning (0.14.2): - Flutter - google_mlkit_commons - - GoogleMLKit/BarcodeScanning (~> 7.0.0) - - google_mlkit_commons (0.11.0): + - GoogleMLKit/BarcodeScanning (~> 9.0.0) + - google_mlkit_commons (0.11.1): - Flutter - - MLKitVision - - google_mlkit_digital_ink_recognition (0.14.1): + - MLKitVision (~> 10.0.0) + - google_mlkit_digital_ink_recognition (0.14.2): - Flutter - google_mlkit_commons - - GoogleMLKit/DigitalInkRecognition (~> 7.0.0) - - google_mlkit_document_scanner (0.4.0): + - GoogleMLKit/DigitalInkRecognition (~> 9.0.0) + - google_mlkit_document_scanner (0.4.1): - Flutter - - google_mlkit_entity_extraction (0.15.1): + - google_mlkit_entity_extraction (0.15.3): - Flutter - google_mlkit_commons - - GoogleMLKit/EntityExtraction (~> 7.0.0) - - google_mlkit_face_detection (0.13.1): + - GoogleMLKit/EntityExtraction (~> 9.0.0) + - google_mlkit_face_detection (0.13.2): - Flutter - google_mlkit_commons - - GoogleMLKit/FaceDetection (~> 7.0.0) - - google_mlkit_face_mesh_detection (0.4.1): + - GoogleMLKit/FaceDetection (~> 9.0.0) + - google_mlkit_face_mesh_detection (0.4.2): - Flutter - google_mlkit_commons - - google_mlkit_image_labeling (0.14.1): + - google_mlkit_image_labeling (0.14.2): - Flutter - google_mlkit_commons - - GoogleMLKit/ImageLabeling (~> 7.0.0) - - GoogleMLKit/ImageLabelingCustom (~> 7.0.0) - - google_mlkit_language_id (0.13.0): + - GoogleMLKit/ImageLabeling (~> 9.0.0) + - GoogleMLKit/ImageLabelingCustom (~> 9.0.0) + - google_mlkit_language_id (0.13.1): - Flutter - google_mlkit_commons - - GoogleMLKit/LanguageID (~> 7.0.0) - - google_mlkit_object_detection (0.15.0): + - GoogleMLKit/LanguageID (~> 9.0.0) + - google_mlkit_object_detection (0.15.1): - Flutter - google_mlkit_commons - - GoogleMLKit/ObjectDetection (~> 7.0.0) - - GoogleMLKit/ObjectDetectionCustom (~> 7.0.0) - - google_mlkit_pose_detection (0.14.0): + - GoogleMLKit/ObjectDetection (~> 9.0.0) + - GoogleMLKit/ObjectDetectionCustom (~> 9.0.0) + - google_mlkit_pose_detection (0.14.1): - Flutter - google_mlkit_commons - - GoogleMLKit/PoseDetection (~> 7.0.0) - - GoogleMLKit/PoseDetectionAccurate (~> 7.0.0) - - google_mlkit_selfie_segmentation (0.10.0): + - GoogleMLKit/PoseDetection (~> 9.0.0) + - GoogleMLKit/PoseDetectionAccurate (~> 9.0.0) + - google_mlkit_selfie_segmentation (0.10.1): - Flutter - google_mlkit_commons - - GoogleMLKit/SegmentationSelfie (~> 7.0.0) - - google_mlkit_smart_reply (0.13.0): + - GoogleMLKit/SegmentationSelfie (~> 9.0.0) + - google_mlkit_smart_reply (0.13.1): - Flutter - google_mlkit_commons - - GoogleMLKit/SmartReply (~> 7.0.0) - - google_mlkit_subject_segmentation (0.0.2): + - GoogleMLKit/SmartReply (~> 9.0.0) + - google_mlkit_subject_segmentation (0.0.3): - Flutter - - google_mlkit_text_recognition (0.15.0): + - google_mlkit_text_recognition (0.15.1): - Flutter - google_mlkit_commons - - GoogleMLKit/TextRecognition (~> 7.0.0) - - google_mlkit_translation (0.13.0): + - GoogleMLKit/TextRecognition (~> 9.0.0) + - google_mlkit_translation (0.13.1): - Flutter - google_mlkit_commons - - GoogleMLKit/Translate (~> 7.0.0) + - GoogleMLKit/Translate (~> 9.0.0) - GoogleDataTransport (10.1.0): - nanopb (~> 3.30910.0) - PromisesObjC (~> 2.4) - - GoogleMLKit/BarcodeScanning (7.0.0): + - GoogleMLKit/BarcodeScanning (9.0.0): - GoogleMLKit/MLKitCore - - MLKitBarcodeScanning (~> 6.0.0) - - GoogleMLKit/DigitalInkRecognition (7.0.0): + - MLKitBarcodeScanning (~> 8.0.0) + - GoogleMLKit/DigitalInkRecognition (9.0.0): - GoogleMLKit/MLKitCore - - MLKitDigitalInkRecognition (~> 6.0.0) - - GoogleMLKit/EntityExtraction (7.0.0): + - MLKitDigitalInkRecognition (~> 8.0.0) + - GoogleMLKit/EntityExtraction (9.0.0): - GoogleMLKit/MLKitCore - - MLKitEntityExtraction (~> 1.0.0-beta13) - - GoogleMLKit/FaceDetection (7.0.0): + - MLKitEntityExtraction (~> 1.0.0-beta15) + - GoogleMLKit/FaceDetection (9.0.0): - GoogleMLKit/MLKitCore - - MLKitFaceDetection (~> 6.0.0) - - GoogleMLKit/ImageLabeling (7.0.0): + - MLKitFaceDetection (~> 8.0.0) + - GoogleMLKit/ImageLabeling (9.0.0): - GoogleMLKit/MLKitCore - - MLKitImageLabeling (~> 6.0.0) - - GoogleMLKit/ImageLabelingCustom (7.0.0): + - MLKitImageLabeling (~> 8.0.0) + - GoogleMLKit/ImageLabelingCustom (9.0.0): - GoogleMLKit/MLKitCore - - MLKitImageLabelingCustom (~> 6.0.0) - - GoogleMLKit/LanguageID (7.0.0): + - MLKitImageLabelingCustom (~> 8.0.0) + - GoogleMLKit/LanguageID (9.0.0): - GoogleMLKit/MLKitCore - - MLKitLanguageID (~> 7.0.0) - - GoogleMLKit/MLKitCore (7.0.0): - - MLKitCommon (~> 12.0.0) - - GoogleMLKit/ObjectDetection (7.0.0): + - MLKitLanguageID (~> 9.0.0) + - GoogleMLKit/MLKitCore (9.0.0): + - MLKitCommon (~> 14.0.0) + - GoogleMLKit/ObjectDetection (9.0.0): - GoogleMLKit/MLKitCore - - MLKitObjectDetection (~> 6.0.0) - - GoogleMLKit/ObjectDetectionCustom (7.0.0): + - MLKitObjectDetection (~> 8.0.0) + - GoogleMLKit/ObjectDetectionCustom (9.0.0): - GoogleMLKit/MLKitCore - - MLKitObjectDetectionCustom (~> 6.0.0) - - GoogleMLKit/PoseDetection (7.0.0): + - MLKitObjectDetectionCustom (~> 8.0.0) + - GoogleMLKit/PoseDetection (9.0.0): - GoogleMLKit/MLKitCore - - MLKitPoseDetection (~> 1.0.0-beta14) - - GoogleMLKit/PoseDetectionAccurate (7.0.0): + - MLKitPoseDetection (~> 1.0.0-beta16) + - GoogleMLKit/PoseDetectionAccurate (9.0.0): - GoogleMLKit/MLKitCore - - MLKitPoseDetectionAccurate (~> 1.0.0-beta14) - - GoogleMLKit/SegmentationSelfie (7.0.0): + - MLKitPoseDetectionAccurate (~> 1.0.0-beta16) + - GoogleMLKit/SegmentationSelfie (9.0.0): - GoogleMLKit/MLKitCore - - MLKitSegmentationSelfie (~> 1.0.0-beta12) - - GoogleMLKit/SmartReply (7.0.0): + - MLKitSegmentationSelfie (~> 1.0.0-beta14) + - GoogleMLKit/SmartReply (9.0.0): - GoogleMLKit/MLKitCore - - MLKitSmartReply (~> 6.0.0) - - GoogleMLKit/TextRecognition (7.0.0): + - MLKitSmartReply (~> 8.0.0) + - GoogleMLKit/TextRecognition (9.0.0): - GoogleMLKit/MLKitCore - - MLKitTextRecognition (~> 5.0.0) - - GoogleMLKit/TextRecognitionChinese (7.0.0): + - MLKitTextRecognition (~> 7.0.0) + - GoogleMLKit/TextRecognitionChinese (9.0.0): - GoogleMLKit/MLKitCore - - MLKitTextRecognitionChinese (~> 4.0.0) - - GoogleMLKit/TextRecognitionDevanagari (7.0.0): + - MLKitTextRecognitionChinese (~> 6.0.0) + - GoogleMLKit/TextRecognitionDevanagari (9.0.0): - GoogleMLKit/MLKitCore - - MLKitTextRecognitionDevanagari (~> 4.0.0) - - GoogleMLKit/TextRecognitionJapanese (7.0.0): + - MLKitTextRecognitionDevanagari (~> 6.0.0) + - GoogleMLKit/TextRecognitionJapanese (9.0.0): - GoogleMLKit/MLKitCore - - MLKitTextRecognitionJapanese (~> 4.0.0) - - GoogleMLKit/TextRecognitionKorean (7.0.0): + - MLKitTextRecognitionJapanese (~> 6.0.0) + - GoogleMLKit/TextRecognitionKorean (9.0.0): - GoogleMLKit/MLKitCore - - MLKitTextRecognitionKorean (~> 4.0.0) - - GoogleMLKit/Translate (7.0.0): + - MLKitTextRecognitionKorean (~> 6.0.0) + - GoogleMLKit/Translate (9.0.0): - GoogleMLKit/MLKitCore - - MLKitTranslate (~> 6.0.0) + - MLKitTranslate (~> 8.0.0) - GoogleToolboxForMac/Defines (4.2.1) - GoogleToolboxForMac/Logger (4.2.1): - GoogleToolboxForMac/Defines (= 4.2.1) @@ -134,148 +130,141 @@ PODS: - GoogleToolboxForMac/Defines (= 4.2.1) - GoogleToolboxForMac/StringEncoding (4.2.1): - GoogleToolboxForMac/Defines (= 4.2.1) - - GoogleUtilities/Environment (8.0.2): + - GoogleUtilities/Environment (8.1.0): - GoogleUtilities/Privacy - - GoogleUtilities/Logger (8.0.2): + - GoogleUtilities/Logger (8.1.0): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (8.0.2) - - GoogleUtilities/UserDefaults (8.0.2): + - GoogleUtilities/Privacy (8.1.0) + - GoogleUtilities/UserDefaults (8.1.0): - GoogleUtilities/Logger - GoogleUtilities/Privacy - GTMSessionFetcher/Core (3.5.0) - - image_picker_ios (0.0.1): - - Flutter - - MLImage (1.0.0-beta6) - - MLKitBarcodeScanning (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitVision (~> 8.0) - - MLKitCommon (12.0.0): + - MLImage (1.0.0-beta8) + - MLKitBarcodeScanning (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitVision (~> 10.0) + - MLKitCommon (14.0.0): - GoogleDataTransport (~> 10.0) - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - GoogleUtilities/Logger (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - - MLKitDigitalInkRecognition (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitMDD (~> 8.0) + - MLKitDigitalInkRecognition (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitMDD (~> 10.0) - SSZipArchive (< 3.0, >= 2.5.5) - - MLKitEntityExtraction (1.0.0-beta13): - - MLKitNaturalLanguage (~> 8.0) - - MLKitFaceDetection (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitVision (~> 8.0) - - MLKitImageLabeling (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitImageLabelingCommon (~> 8.0) - - MLKitVision (~> 8.0) - - MLKitVisionKit (~> 9.0) - - MLKitImageLabelingCommon (8.0.0): - - MLKitCommon (~> 12.0) - - MLKitVision (~> 8.0) - - MLKitImageLabelingCustom (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitImageLabelingCommon (~> 8.0) - - MLKitVision (~> 8.0) - - MLKitVisionKit (~> 9.0) - - MLKitLanguageID (7.0.0): - - MLKitNaturalLanguage (~> 8.0) - - MLKitMDD (8.0.0): - - MLKitCommon (~> 12.0) - - MLKitNaturalLanguage (8.0.0): + - MLKitEntityExtraction (1.0.0-beta15): + - MLKitNaturalLanguage (~> 10.0) + - MLKitFaceDetection (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitVision (~> 10.0) + - MLKitImageLabeling (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitImageLabelingCommon (~> 10.0) + - MLKitVision (~> 10.0) + - MLKitVisionKit (~> 11.0) + - MLKitImageLabelingCommon (10.0.0): + - MLKitCommon (~> 14.0) + - MLKitVision (~> 10.0) + - MLKitImageLabelingCustom (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitImageLabelingCommon (~> 10.0) + - MLKitVision (~> 10.0) + - MLKitVisionKit (~> 11.0) + - MLKitLanguageID (9.0.0): + - MLKitNaturalLanguage (~> 10.0) + - MLKitMDD (10.0.0): + - MLKitCommon (~> 14.0) + - MLKitNaturalLanguage (10.0.0): - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - GoogleToolboxForMac/StringEncoding (< 5.0, >= 4.2.1) - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - - MLKitCommon (~> 12.0) - - MLKitObjectDetection (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitObjectDetectionCommon (~> 8.0) - - MLKitVision (~> 8.0) - - MLKitVisionKit (~> 9.0) - - MLKitObjectDetectionCommon (8.0.0): - - MLKitCommon (~> 12.0) - - MLKitVision (~> 8.0) - - MLKitObjectDetectionCustom (6.0.0): - - MLKitCommon (~> 12.0) - - MLKitObjectDetectionCommon (~> 8.0) - - MLKitVision (~> 8.0) - - MLKitVisionKit (~> 9.0) - - MLKitPoseDetection (1.0.0-beta14): - - MLKitCommon (~> 12.0) - - MLKitPoseDetectionCommon (= 1.0.0-beta14) - - MLKitXenoCommon (= 1.0.0-beta14) - - MLKitPoseDetectionAccurate (1.0.0-beta14): - - MLKitCommon (~> 12.0) - - MLKitPoseDetectionCommon (= 1.0.0-beta14) - - MLKitXenoCommon (= 1.0.0-beta14) - - MLKitPoseDetectionCommon (1.0.0-beta14): - - MLKitCommon (~> 12.0) - - MLKitXenoCommon (= 1.0.0-beta14) - - MLKitSegmentationCommon (1.0.0-beta12): - - MLKitCommon (~> 12.0) - - MLKitXenoCommon (= 1.0.0-beta14) - - MLKitSegmentationSelfie (1.0.0-beta12): - - MLKitSegmentationCommon (= 1.0.0-beta12) - - MLKitSmartReply (6.0.0): - - MLKitLanguageID (~> 7.0) - - MLKitNaturalLanguage (~> 8.0) - - MLKitTextRecognition (5.0.0): - - MLKitCommon (~> 12.0) - - MLKitTextRecognitionCommon (= 4.0.0) - - MLKitVision (~> 8.0) - - MLKitTextRecognitionChinese (4.0.0): - - MLKitCommon (~> 12.0) - - MLKitTextRecognitionCommon (= 4.0.0) - - MLKitVision (~> 8.0) - - MLKitTextRecognitionCommon (4.0.0): - - MLKitCommon (~> 12.0) - - MLKitVision (~> 8.0) - - MLKitTextRecognitionDevanagari (4.0.0): - - MLKitCommon (~> 12.0) - - MLKitTextRecognitionCommon (= 4.0.0) - - MLKitVision (~> 8.0) - - MLKitTextRecognitionJapanese (4.0.0): - - MLKitCommon (~> 12.0) - - MLKitTextRecognitionCommon (= 4.0.0) - - MLKitVision (~> 8.0) - - MLKitTextRecognitionKorean (4.0.0): - - MLKitCommon (~> 12.0) - - MLKitTextRecognitionCommon (= 4.0.0) - - MLKitVision (~> 8.0) - - MLKitTranslate (6.0.0): - - MLKitNaturalLanguage (~> 8.0) + - MLKitCommon (~> 14.0) + - MLKitObjectDetection (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitObjectDetectionCommon (~> 10.0) + - MLKitVision (~> 10.0) + - MLKitVisionKit (~> 11.0) + - MLKitObjectDetectionCommon (10.0.0): + - MLKitCommon (~> 14.0) + - MLKitVision (~> 10.0) + - MLKitObjectDetectionCustom (8.0.0): + - MLKitCommon (~> 14.0) + - MLKitObjectDetectionCommon (~> 10.0) + - MLKitVision (~> 10.0) + - MLKitVisionKit (~> 11.0) + - MLKitPoseDetection (1.0.0-beta16): + - MLKitCommon (~> 14.0) + - MLKitPoseDetectionCommon (= 1.0.0-beta16) + - MLKitXenoCommon (= 1.0.0-beta16) + - MLKitPoseDetectionAccurate (1.0.0-beta16): + - MLKitCommon (~> 14.0) + - MLKitPoseDetectionCommon (= 1.0.0-beta16) + - MLKitXenoCommon (= 1.0.0-beta16) + - MLKitPoseDetectionCommon (1.0.0-beta16): + - MLKitCommon (~> 14.0) + - MLKitXenoCommon (= 1.0.0-beta16) + - MLKitSegmentationCommon (1.0.0-beta14): + - MLKitCommon (~> 14.0) + - MLKitXenoCommon (= 1.0.0-beta16) + - MLKitSegmentationSelfie (1.0.0-beta14): + - MLKitSegmentationCommon (= 1.0.0-beta14) + - MLKitSmartReply (8.0.0): + - MLKitLanguageID (~> 9.0) + - MLKitNaturalLanguage (~> 10.0) + - MLKitTextRecognition (7.0.0): + - MLKitCommon (~> 14.0) + - MLKitTextRecognitionCommon (= 6.0.0) + - MLKitVision (~> 10.0) + - MLKitTextRecognitionChinese (6.0.0): + - MLKitCommon (~> 14.0) + - MLKitTextRecognitionCommon (= 6.0.0) + - MLKitVision (~> 10.0) + - MLKitTextRecognitionCommon (6.0.0): + - MLKitCommon (~> 14.0) + - MLKitVision (~> 10.0) + - MLKitTextRecognitionDevanagari (6.0.0): + - MLKitCommon (~> 14.0) + - MLKitTextRecognitionCommon (= 6.0.0) + - MLKitVision (~> 10.0) + - MLKitTextRecognitionJapanese (6.0.0): + - MLKitCommon (~> 14.0) + - MLKitTextRecognitionCommon (= 6.0.0) + - MLKitVision (~> 10.0) + - MLKitTextRecognitionKorean (6.0.0): + - MLKitCommon (~> 14.0) + - MLKitTextRecognitionCommon (= 6.0.0) + - MLKitVision (~> 10.0) + - MLKitTranslate (8.0.0): + - MLKitNaturalLanguage (~> 10.0) - SSZipArchive (< 3.0, >= 2.5.5) - - MLKitVision (8.0.0): + - MLKitVision (10.0.0): - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1) - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)" - GTMSessionFetcher/Core (< 4.0, >= 3.3.2) - - MLImage (= 1.0.0-beta6) - - MLKitCommon (~> 12.0) - - MLKitVisionKit (9.0.0): - - MLKitCommon (~> 12.0) - - MLKitImageLabelingCommon (~> 8.0) - - MLKitObjectDetectionCommon (~> 8.0) - - MLKitVision (~> 8.0) - - MLKitXenoCommon (1.0.0-beta14): - - MLKitCommon (~> 12.0) - - MLKitVision (~> 8.0) + - MLImage (= 1.0.0-beta8) + - MLKitCommon (~> 14.0) + - MLKitVisionKit (11.0.0): + - MLKitCommon (~> 14.0) + - MLKitImageLabelingCommon (~> 10.0) + - MLKitObjectDetectionCommon (~> 10.0) + - MLKitVision (~> 10.0) + - MLKitXenoCommon (1.0.0-beta16): + - MLKitCommon (~> 14.0) + - MLKitVision (~> 10.0) - nanopb (3.30910.0): - nanopb/decode (= 3.30910.0) - nanopb/encode (= 3.30910.0) - nanopb/decode (3.30910.0) - nanopb/encode (3.30910.0) - - path_provider_foundation (0.0.1): - - Flutter - - FlutterMacOS - PromisesObjC (2.4.0) - SSZipArchive (2.6.0) DEPENDENCIES: - - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - Flutter (from `Flutter`) - - flutter_pdfview (from `.symlinks/plugins/flutter_pdfview/ios`) - google_mlkit_barcode_scanning (from `.symlinks/plugins/google_mlkit_barcode_scanning/ios`) - google_mlkit_commons (from `.symlinks/plugins/google_mlkit_commons/ios`) - google_mlkit_digital_ink_recognition (from `.symlinks/plugins/google_mlkit_digital_ink_recognition/ios`) @@ -292,12 +281,10 @@ DEPENDENCIES: - google_mlkit_subject_segmentation (from `.symlinks/plugins/google_mlkit_subject_segmentation/ios`) - google_mlkit_text_recognition (from `.symlinks/plugins/google_mlkit_text_recognition/ios`) - google_mlkit_translation (from `.symlinks/plugins/google_mlkit_translation/ios`) - - GoogleMLKit/TextRecognitionChinese (~> 7.0.0) - - GoogleMLKit/TextRecognitionDevanagari (~> 7.0.0) - - GoogleMLKit/TextRecognitionJapanese (~> 7.0.0) - - GoogleMLKit/TextRecognitionKorean (~> 7.0.0) - - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - GoogleMLKit/TextRecognitionChinese (~> 9.0.0) + - GoogleMLKit/TextRecognitionDevanagari (~> 9.0.0) + - GoogleMLKit/TextRecognitionJapanese (~> 9.0.0) + - GoogleMLKit/TextRecognitionKorean (~> 9.0.0) SPEC REPOS: trunk: @@ -342,12 +329,8 @@ SPEC REPOS: - SSZipArchive EXTERNAL SOURCES: - camera_avfoundation: - :path: ".symlinks/plugins/camera_avfoundation/ios" Flutter: :path: Flutter - flutter_pdfview: - :path: ".symlinks/plugins/flutter_pdfview/ios" google_mlkit_barcode_scanning: :path: ".symlinks/plugins/google_mlkit_barcode_scanning/ios" google_mlkit_commons: @@ -380,73 +363,65 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/google_mlkit_text_recognition/ios" google_mlkit_translation: :path: ".symlinks/plugins/google_mlkit_translation/ios" - image_picker_ios: - :path: ".symlinks/plugins/image_picker_ios/ios" - path_provider_foundation: - :path: ".symlinks/plugins/path_provider_foundation/darwin" SPEC CHECKSUMS: - camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4 - Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_pdfview: 2e4d13ffb774858562ffbdfdb61b40744b191adc - google_mlkit_barcode_scanning: e6c5e596d4dd5342e51516dcf99becb9154bae2d - google_mlkit_commons: 2544377e5503bf78ee7412ccfce0394c2dcb8a6b - google_mlkit_digital_ink_recognition: f0d5f5085f5af385f9e89a7634cad1ac21d5cea3 - google_mlkit_document_scanner: b972a0a9a4b2e4474e750b17e4d62594b369081b - google_mlkit_entity_extraction: ae00e2eb6fc3a5ee236ef4a103d9152a5a3502c7 - google_mlkit_face_detection: 111b3ac2f2df6ad5f464bafed9ba380ac8366d37 - google_mlkit_face_mesh_detection: 0bf0802f4d6e26942b6992d578fc86a72f20e21b - google_mlkit_image_labeling: 7f16bdb0e7f38805d9bf78527ba644572ef76089 - google_mlkit_language_id: a7c92ec75c3aaf0e5511011bb5987fd23da08f84 - google_mlkit_object_detection: 7127aa6c97beda18b413a6d5c971a81ab200da00 - google_mlkit_pose_detection: 59df333b48a6e2a3115504f7811bf87454b20537 - google_mlkit_selfie_segmentation: 2f9120dc546ef0b4e8efcbad07e36f46ed156d2a - google_mlkit_smart_reply: bc21ddc58d3291267d451806313888095c552041 - google_mlkit_subject_segmentation: d8a689be21d0a8a393549163a09ce703fb4bfb78 - google_mlkit_text_recognition: c30828d00af79c10dc56bed2c6a4ca8b7dd40a50 - google_mlkit_translation: 9f762b8689e18a13e2a75bd0cebba2831b3986c1 + Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + google_mlkit_barcode_scanning: 12d8422d8f7b00726dedf9cac00188a2b98750c2 + google_mlkit_commons: a5e4ffae5bc59ea4c7b9025dc72cb6cb79dc1166 + google_mlkit_digital_ink_recognition: a9f14c9a75bad980ea26f2d3ce277f5963f413ba + google_mlkit_document_scanner: 107c2c91ea967acb9eb989ff988443b81b8e761a + google_mlkit_entity_extraction: 45de8519319089085569ef9e10e2500b8d0d55a0 + google_mlkit_face_detection: ee4b72cfae062b4c972204be955d83055a4bfd36 + google_mlkit_face_mesh_detection: 644aad01e609e0962bc38495d1d807e2ae9f5e1b + google_mlkit_image_labeling: 6f6fdb11c14600e01898e59a8c4413b255ede272 + google_mlkit_language_id: de6f5cc02967420549c3c3a1624b359217442db9 + google_mlkit_object_detection: 6a81b32faf7a9b700bed7a2caa67254818553257 + google_mlkit_pose_detection: 211eabf55f5ea8d6a9537fdade0a37148fc84d8b + google_mlkit_selfie_segmentation: 0317616b7e460f242bd13a805b70f4e0ba636336 + google_mlkit_smart_reply: fa236bc7f5f8ed70a894a659ec8d43b5b05374a6 + google_mlkit_subject_segmentation: 864c91cd7c89cedc4b17021794c6c182ba165e0f + google_mlkit_text_recognition: b3de5adb786ad7a0fe8e13618387b8d2df0f3c70 + google_mlkit_translation: c5a10fefc8f641df87a49d2744b2b1bf0c418064 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 - GoogleMLKit: eff9e23ec1d90ea4157a1ee2e32a4f610c5b3318 + GoogleMLKit: b1eee21a41c57704fe72483b15c85cb2c0cd7444 GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8 - GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d + GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 - image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 - MLImage: 0ad1c5f50edd027672d8b26b0fee78a8b4a0fc56 - MLKitBarcodeScanning: 0a3064da0a7f49ac24ceb3cb46a5bc67496facd2 - MLKitCommon: 07c2c33ae5640e5380beaaa6e4b9c249a205542d - MLKitDigitalInkRecognition: 42c38de99db7074ea19c9a92dafb1672f64a2649 - MLKitEntityExtraction: 0a3cdc3498ce58aaba2ebb3479fe34a0787d3812 - MLKitFaceDetection: 2a593db4837db503ad3426b565e7aab045cefea5 - MLKitImageLabeling: 7f052589de9ffde213bc2c26854d212ea4dde17a - MLKitImageLabelingCommon: 23f0c9037c2c6433784db594bd1bb87173172fe9 - MLKitImageLabelingCustom: 594c49fa1bb809ec05215bb4ac1c15729c7a601a - MLKitLanguageID: f52e378d875f1a5e67ac0f259ebddaab95faa1c7 - MLKitMDD: a8d5a4d6a3520403d7beea887ae6ed837cf0ad26 - MLKitNaturalLanguage: 1faece38017b0cf8eb49ac69cff10cb419f68c01 - MLKitObjectDetection: a5f066aa6e90f134fc1ac47940e95381b7eb5257 - MLKitObjectDetectionCommon: 0198709a728984e3b6fac98a5fa53a8042880336 - MLKitObjectDetectionCustom: b243512ccac75c98399c272e213b53413a255c07 - MLKitPoseDetection: 9570bd90f18cd38c1599314785d1f70401569d94 - MLKitPoseDetectionAccurate: 2c40d53a7b8cbb67b0ca1892b221f24ef4bac1ce - MLKitPoseDetectionCommon: b1fc630b8af919dd04bf3dd6c24cec239c0f95fd - MLKitSegmentationCommon: a172e593007cb4c2637276280ea7bc4dd8a4ca3e - MLKitSegmentationSelfie: 9a70d110d1ab62bab31bf3337727d1dfeb98cbe8 - MLKitSmartReply: 3039858d37cd53807d1c00d239f7b52cbd3cabee - MLKitTextRecognition: 3b41f3ff084a79afb214408d25d2068d77ab322c - MLKitTextRecognitionChinese: a7e2d3e54d8be80091f7064741c54e2298a9d498 - MLKitTextRecognitionCommon: cd44577a8c506fc6bba065096de03bec0d01a213 - MLKitTextRecognitionDevanagari: b7a59a5e337ccb669eae82a503aa8e9287ba0c58 - MLKitTextRecognitionJapanese: 4a62c24ecf1cbaeccc8a235c81c0ba397807d7d8 - MLKitTextRecognitionKorean: b86e13e4a648efc7727d3261ddbf8afbf467c5c1 - MLKitTranslate: 2082cce437292f2f7477bfef02022ef69d8e77aa - MLKitVision: 45e79d68845a2de77e2dd4d7f07947f0ed157b0e - MLKitVisionKit: 8a7abd5f11aeb1add2942a694c2685eca422a849 - MLKitXenoCommon: ce5047943af6b4be7ae035dd81b3a56fdb29aab3 + MLImage: 0de5c6c2bf9e93b80ef752e2797f0836f03b58c0 + MLKitBarcodeScanning: 39de223e7b1b8a8fbf10816a536dd292d8a39343 + MLKitCommon: 47d47b50a031d00db62f1b0efe5a1d8b09a3b2e6 + MLKitDigitalInkRecognition: d352ba532b816e7a930b8fa2e180288352c4736c + MLKitEntityExtraction: 9f529552862823d493d999fe7920fb195cfba8e3 + MLKitFaceDetection: 32549f1e70e6e7731261bf9cea2b74095e2531cb + MLKitImageLabeling: 739591b1b69ebab735e97fa1b4ce37cea8361bb7 + MLKitImageLabelingCommon: 616b0c69b3e302720cfb65903da50dc2e697b915 + MLKitImageLabelingCustom: 43cf5d49fb762adb93e3108cb55c81a8ec005d57 + MLKitLanguageID: 7b7d115881e0e036627052e32d7771b9d7f67ee6 + MLKitMDD: 264ea38cb1eafc18ee1f37eb69e7f2596962df6c + MLKitNaturalLanguage: 498154f2461f97abb00eb161eb773670ffc46250 + MLKitObjectDetection: c6346f1e6fd945d9a1a993104184e886bda6e0f6 + MLKitObjectDetectionCommon: 0639341c7cbb44327dac9a23c473d2484d3169dd + MLKitObjectDetectionCustom: a210309c7d2a0c08b0ce7b9ef3e8d36027c96978 + MLKitPoseDetection: 037fc62d6ccdd5a63253d1f40f90a8120b0d9c61 + MLKitPoseDetectionAccurate: 4b25c5447244db7e1d97963c4d6e4ebe612c2d88 + MLKitPoseDetectionCommon: 4709eb53b8638f5bf87c1a0255ad8aa4db9ad460 + MLKitSegmentationCommon: f634fb3c20c1d8bace22a2c026bdaa0ca17613d9 + MLKitSegmentationSelfie: 62371f35c33d49c3e7474443677b6a0c7ac9c98b + MLKitSmartReply: 52977167d7d824207a784fa42ace19d6c6e698e8 + MLKitTextRecognition: c0ad24510481dfc8893ad15dfcb8a5f05ed9e826 + MLKitTextRecognitionChinese: b69210723ed8cc9bc7b2e7847001880b0dcbb7f8 + MLKitTextRecognitionCommon: 234ceb1cfdfb5fceb4fd664943046609a2961cc2 + MLKitTextRecognitionDevanagari: 326281ad520172466dd6dd6a784fa03fb8ab9e37 + MLKitTextRecognitionJapanese: 965f89fd8ad3a02eb466106522ed08ea19f30f61 + MLKitTextRecognitionKorean: 22c8d6a73f519fa9732873993a30b067f8deccb1 + MLKitTranslate: fcb283a2cbaaa595e1cf1d3fedffcea2e97a1168 + MLKitVision: 39a5a812db83c4a0794445088e567f3631c11961 + MLKitVisionKit: 316cd349468797ef4e7fd785bf658ca838984de3 + MLKitXenoCommon: 1a4268c1222a6043047af5bb9435028206c63287 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 SSZipArchive: 8a6ee5677c8e304bebc109e39cf0da91ccef22ea -PODFILE CHECKSUM: a6ea96f636e90b752cb8b415c5489a4e03a6c755 +PODFILE CHECKSUM: 810ea711de6d4d578877638350f293e7020676b9 COCOAPODS: 1.16.2 diff --git a/packages/example/ios/Runner.xcodeproj/project.pbxproj b/packages/example/ios/Runner.xcodeproj/project.pbxproj index 5519bb4a..54cd2fa0 100644 --- a/packages/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/example/ios/Runner.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 19BEEF351D804C298C54516F /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 185FF648C8C3525E10052A2C /* libPods-Runner.a */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -48,7 +49,9 @@ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7AFA3C8F1D35360C0083082F /* Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Profile.xcconfig; path = Flutter/Profile.xcconfig; sourceTree = ""; }; 8A014A7A90898F823F3D4B3D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 923A943AD1A8668FF24F5D59 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; @@ -65,6 +68,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, 19BEEF351D804C298C54516F /* libPods-Runner.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -93,9 +97,11 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 7AFA3C8F1D35360C0083082F /* Profile.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, ); name = Flutter; @@ -174,6 +180,9 @@ dependencies = ( ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -207,6 +216,9 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -413,11 +425,12 @@ }; 249021D4217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + baseConfigurationReference = 7AFA3C8F1D35360C0083082F /* Profile.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.5; @@ -425,7 +438,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.google.ml.kit.flutter.example; + PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -600,6 +613,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.5; @@ -607,7 +621,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.google.ml.kit.flutter.example; + PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -623,6 +637,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.5; @@ -630,7 +645,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.google.ml.kit.flutter.example; + PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -672,6 +687,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/packages/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 15cada48..c3fedb29 100644 --- a/packages/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + To take video with your camera NSPhotoLibraryUsageDescription To access your photos in your Library + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -55,7 +57,5 @@ UIViewControllerBasedStatusBarAppearance - UIApplicationSupportsIndirectInputEvents - diff --git a/packages/example/pubspec.lock b/packages/example/pubspec.lock index 2dd01c9c..216dd6dd 100644 --- a/packages/example/pubspec.lock +++ b/packages/example/pubspec.lock @@ -21,50 +21,50 @@ packages: dependency: "direct main" description: name: camera - sha256: d6ec2cbdbe2fa8f5e0d07d8c06368fe4effa985a4a5ddade9cc58a8cd849557d + sha256: eefad89f262a873f38d21e5eec853461737ea074d7c9ede39f3ceb135d201cab url: "https://pub.dev" source: hosted - version: "0.11.2" + version: "0.11.3" camera_android: dependency: "direct main" description: name: camera_android - sha256: cd49ccb409201a893bf625dca2df8746b88679f302826ab4d12748788a3a24b3 + sha256: "50c0d1c4b122163e3d7cdfcd6d4cd8078aac27d0f1cd1e7b3fa69e6b3f06f4b7" url: "https://pub.dev" source: hosted - version: "0.10.10+7" + version: "0.10.10+14" camera_android_camerax: dependency: transitive description: name: camera_android_camerax - sha256: "2d438248554f44766bf9ea34c117a5bb0074e241342ef7c22c768fb431335234" + sha256: "8516fe308bc341a5067fb1a48edff0ddfa57c0d3cdcc9dbe7ceca3ba119e2577" url: "https://pub.dev" source: hosted - version: "0.6.21" + version: "0.6.30" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "951ef122d01ebba68b7a54bfe294e8b25585635a90465c311b2f875ae72c412f" + sha256: a600b60a7752cc5fa9de476cd0055539d7a3b9d62662f4f446bae49eba2267df url: "https://pub.dev" source: hosted - version: "0.9.21+2" + version: "0.9.22+9" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" + sha256: "98cfc9357e04bad617671b4c1f78a597f25f08003089dd94050709ae54effc63" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.12.0" camera_web: dependency: transitive description: name: camera_web - sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f" + sha256: "57f49a635c8bf249d07fb95eb693d7e4dda6796dedb3777f9127fb54847beba7" url: "https://pub.dev" source: hosted - version: "0.3.5" + version: "0.3.5+3" characters: dependency: transitive description: @@ -93,10 +93,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5+2" fake_async: dependency: transitive description: @@ -109,42 +109,42 @@ packages: dependency: transitive description: name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + sha256: d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" file_selector_linux: dependency: transitive description: name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.4" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" + sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a" url: "https://pub.dev" source: hosted - version: "0.9.4+4" + version: "0.9.5" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" file_selector_windows: dependency: transitive description: name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" url: "https://pub.dev" source: hosted - version: "0.9.3+4" + version: "0.9.3+5" flutter: dependency: "direct main" description: flutter @@ -162,18 +162,18 @@ packages: dependency: "direct main" description: name: flutter_pdfview - sha256: c402ad1f51ba8ea73b9fb04c003ca0a9286118ba5ac9787ee2aa58956b3fcf8a + sha256: "5b80e89f3ba6e478d1e897543c9634508284ad73476807febc188378986b69ee" url: "https://pub.dev" source: hosted - version: "1.4.1+1" + version: "1.4.4" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 + sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1 url: "https://pub.dev" source: hosted - version: "2.0.30" + version: "2.0.33" flutter_test: dependency: "direct dev" description: flutter @@ -190,120 +190,120 @@ packages: path: "../google_mlkit_barcode_scanning" relative: true source: path - version: "0.14.1" + version: "0.14.2" google_mlkit_commons: dependency: "direct main" description: path: "../google_mlkit_commons" relative: true source: path - version: "0.11.0" + version: "0.11.1" google_mlkit_digital_ink_recognition: dependency: "direct main" description: path: "../google_mlkit_digital_ink_recognition" relative: true source: path - version: "0.14.1" + version: "0.14.2" google_mlkit_document_scanner: dependency: "direct main" description: path: "../google_mlkit_document_scanner" relative: true source: path - version: "0.4.0" + version: "0.4.1" google_mlkit_entity_extraction: dependency: "direct main" description: path: "../google_mlkit_entity_extraction" relative: true source: path - version: "0.15.1" + version: "0.15.3" google_mlkit_face_detection: dependency: "direct main" description: path: "../google_mlkit_face_detection" relative: true source: path - version: "0.13.1" + version: "0.13.2" google_mlkit_face_mesh_detection: dependency: "direct main" description: path: "../google_mlkit_face_mesh_detection" relative: true source: path - version: "0.4.1" + version: "0.4.2" google_mlkit_image_labeling: dependency: "direct main" description: path: "../google_mlkit_image_labeling" relative: true source: path - version: "0.14.1" + version: "0.14.2" google_mlkit_language_id: dependency: "direct main" description: path: "../google_mlkit_language_id" relative: true source: path - version: "0.13.0" + version: "0.13.1" google_mlkit_object_detection: dependency: "direct main" description: path: "../google_mlkit_object_detection" relative: true source: path - version: "0.15.0" + version: "0.15.1" google_mlkit_pose_detection: dependency: "direct main" description: path: "../google_mlkit_pose_detection" relative: true source: path - version: "0.14.0" + version: "0.14.1" google_mlkit_selfie_segmentation: dependency: "direct main" description: path: "../google_mlkit_selfie_segmentation" relative: true source: path - version: "0.10.0" + version: "0.10.1" google_mlkit_smart_reply: dependency: "direct main" description: path: "../google_mlkit_smart_reply" relative: true source: path - version: "0.13.0" + version: "0.13.1" google_mlkit_subject_segmentation: dependency: "direct main" description: path: "../google_mlkit_subject_segmentation" relative: true source: path - version: "0.0.2" + version: "0.0.3" google_mlkit_text_recognition: dependency: "direct main" description: path: "../google_mlkit_text_recognition" relative: true source: path - version: "0.15.0" + version: "0.15.1" google_mlkit_translation: dependency: "direct main" description: path: "../google_mlkit_translation" relative: true source: path - version: "0.13.0" + version: "0.13.1" http: dependency: transitive description: name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.6.0" http_parser: dependency: transitive description: @@ -316,34 +316,34 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" + sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: a45bef33deb24839a51fb85a4d9e504ead2b1ad1c4779d02d09bf6a8857cdd52 + sha256: "518a16108529fc18657a3e6dde4a043dc465d16596d20ab2abd49a4cac2e703d" url: "https://pub.dev" source: hosted - version: "0.8.13+2" + version: "0.8.13+13" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" + sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + sha256: "956c16a42c0c708f914021666ffcd8265dde36e673c9fa68c81f7d085d9774ad" url: "https://pub.dev" source: hosted - version: "0.8.13" + version: "0.8.13+3" image_picker_linux: dependency: transitive description: @@ -356,18 +356,18 @@ packages: dependency: transitive description: name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" url: "https://pub.dev" source: hosted - version: "0.2.2" + version: "0.2.2+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.11.1" image_picker_windows: dependency: transitive description: @@ -404,10 +404,10 @@ packages: dependency: transitive description: name: lints - sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" matcher: dependency: transitive description: @@ -428,10 +428,10 @@ packages: dependency: transitive description: name: meta - sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.16.0" mime: dependency: transitive description: @@ -460,18 +460,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e url: "https://pub.dev" source: hosted - version: "2.2.18" + version: "2.2.22" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: "6d13aece7b3f5c5a9731eaf553ff9dcbc2eff41087fd2df587fd0fed9a3eb0c4" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.1" path_provider_linux: dependency: transitive description: @@ -569,10 +569,10 @@ packages: dependency: transitive description: name: test_api - sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.7" + version: "0.7.6" typed_data: dependency: transitive description: diff --git a/packages/example/pubspec.yaml b/packages/example/pubspec.yaml index 8ff9af6d..d3646332 100644 --- a/packages/example/pubspec.yaml +++ b/packages/example/pubspec.yaml @@ -21,7 +21,8 @@ dependencies: path: ^1.9.1 path_provider: ^2.1.5 - google_mlkit_commons: any + google_mlkit_commons: + path: ../google_mlkit_commons google_mlkit_barcode_scanning: path: ../google_mlkit_barcode_scanning google_mlkit_digital_ink_recognition: diff --git a/packages/google_ml_kit/CHANGELOG.md b/packages/google_ml_kit/CHANGELOG.md index 11af0456..95f2de88 100644 --- a/packages/google_ml_kit/CHANGELOG.md +++ b/packages/google_ml_kit/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.20.1 + +* Update all native dependencies to latest versions +* See individual package changelogs for specific version updates + ## 0.20.0 * Increase android sdk compile version to 35 diff --git a/packages/google_ml_kit/lib/src/natural_language.dart b/packages/google_ml_kit/lib/src/natural_language.dart index 1db7d495..f2a26f9f 100644 --- a/packages/google_ml_kit/lib/src/natural_language.dart +++ b/packages/google_ml_kit/lib/src/natural_language.dart @@ -10,31 +10,38 @@ class NaturalLanguage { /// Returns instance of [LanguageIdentifier]. @Deprecated( - 'Use [google_mlkit_language_id] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_language_id] plugin instead of [google_ml_kit].', + ) LanguageIdentifier languageIdentifier({double confidenceThreshold = 0.5}) { return LanguageIdentifier(confidenceThreshold: confidenceThreshold); } /// Returns instance of [OnDeviceTranslator]. @Deprecated( - 'Use [google_mlkit_translation] plugin instead of [google_ml_kit].') - OnDeviceTranslator onDeviceTranslator( - {required TranslateLanguage sourceLanguage, - required TranslateLanguage targetLanguage}) { + 'Use [google_mlkit_translation] plugin instead of [google_ml_kit].', + ) + OnDeviceTranslator onDeviceTranslator({ + required TranslateLanguage sourceLanguage, + required TranslateLanguage targetLanguage, + }) { return OnDeviceTranslator( - sourceLanguage: sourceLanguage, targetLanguage: targetLanguage); + sourceLanguage: sourceLanguage, + targetLanguage: targetLanguage, + ); } /// Returns instance of [EntityExtractor]. @Deprecated( - 'Use [google_mlkit_entity_extraction] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_entity_extraction] plugin instead of [google_ml_kit].', + ) EntityExtractor entityExtractor(EntityExtractorLanguage language) { return EntityExtractor(language: language); } /// Returns instance of [SmartReply]. @Deprecated( - 'Use [google_mlkit_smart_reply] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_smart_reply] plugin instead of [google_ml_kit].', + ) SmartReply smartReply() { return SmartReply(); } diff --git a/packages/google_ml_kit/lib/src/vision.dart b/packages/google_ml_kit/lib/src/vision.dart index 991920a5..e3227cf7 100644 --- a/packages/google_ml_kit/lib/src/vision.dart +++ b/packages/google_ml_kit/lib/src/vision.dart @@ -23,7 +23,8 @@ class Vision { /// You can provide either [LocalLabelerOptions] to use a custom tflite model /// Or [AutoMLImageLabelerOptions] to use auto ml vision model trained by you @Deprecated( - 'Use [google_mlkit_image_labeling] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_image_labeling] plugin instead of [google_ml_kit].', + ) ImageLabeler imageLabeler([ImageLabelerOptions? imageLabelerOptions]) { return ImageLabeler(options: imageLabelerOptions ?? ImageLabelerOptions()); } @@ -31,7 +32,8 @@ class Vision { /// Returns instance of [BarcodeScanner]. By default it searches the input image for all [BarcodeFormat]s. /// To limit the search model to specific [BarcodeFormat] pass list of [BarcodeFormat] as argument. @Deprecated( - 'Use [google_mlkit_barcode_scanning] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_barcode_scanning] plugin instead of [google_ml_kit].', + ) BarcodeScanner barcodeScanner([List? formatList]) { return BarcodeScanner(formats: formatList ?? [BarcodeFormat.all]); } @@ -40,53 +42,62 @@ class Vision { /// To limit the result to specific [PoseLandmark] pass list of [PoseLandmark]'s a /// All the 33 positions have been declared as static constants in [PoseLandmark] class @Deprecated( - 'Use [google_mlkit_pose_detection] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_pose_detection] plugin instead of [google_ml_kit].', + ) PoseDetector poseDetector({PoseDetectorOptions? poseDetectorOptions}) { return PoseDetector(options: poseDetectorOptions ?? PoseDetectorOptions()); } /// Returns an instance of [DigitalInkRecognizer] @Deprecated( - 'Use [google_mlkit_digital_ink_recognition] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_digital_ink_recognition] plugin instead of [google_ml_kit].', + ) DigitalInkRecognizer digitalInkRecognizer({required String languageCode}) { return DigitalInkRecognizer(languageCode: languageCode); } /// Return an instance of [TextRecognizer]. @Deprecated( - 'Use [google_mlkit_text_recognition] plugin instead of [google_ml_kit].') - TextRecognizer textRecognizer( - {TextRecognitionScript script = TextRecognitionScript.latin}) { + 'Use [google_mlkit_text_recognition] plugin instead of [google_ml_kit].', + ) + TextRecognizer textRecognizer({ + TextRecognitionScript script = TextRecognitionScript.latin, + }) { return TextRecognizer(script: script); } /// Return an instance of [FaceDetector]. @Deprecated( - 'Use [google_mlkit_face_detection] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_face_detection] plugin instead of [google_ml_kit].', + ) FaceDetector faceDetector([FaceDetectorOptions? options]) { return FaceDetector(options: options ?? FaceDetectorOptions()); } /// Return an instance of [FaceMeshDetector]. @Deprecated( - 'Use [google_mlkit_face_mesh_detection] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_face_mesh_detection] plugin instead of [google_ml_kit].', + ) FaceMeshDetector faceMeshDetector([FaceMeshDetectorOptions? option]) { return FaceMeshDetector(option: option ?? FaceMeshDetectorOptions.faceMesh); } /// Returns an instance of [ObjectDetector]. @Deprecated( - 'Use [google_mlkit_object_detection] plugin instead of [google_ml_kit].') + 'Use [google_mlkit_object_detection] plugin instead of [google_ml_kit].', + ) ObjectDetector objectDetector({required ObjectDetectorOptions options}) { return ObjectDetector(options: options); } /// Returns an instance of [SelfieSegmenter]. @Deprecated( - 'Use [google_mlkit_selfie_segmentation] plugin instead of [google_ml_kit].') - SelfieSegmenter selfieSegmenter( - {SegmenterMode mode = SegmenterMode.stream, - bool enableRawSizeMask = false}) { + 'Use [google_mlkit_selfie_segmentation] plugin instead of [google_ml_kit].', + ) + SelfieSegmenter selfieSegmenter({ + SegmenterMode mode = SegmenterMode.stream, + bool enableRawSizeMask = false, + }) { return SelfieSegmenter(mode: mode, enableRawSizeMask: enableRawSizeMask); } } diff --git a/packages/google_ml_kit/pubspec.yaml b/packages/google_ml_kit/pubspec.yaml index 89493457..4d11efbf 100644 --- a/packages/google_ml_kit/pubspec.yaml +++ b/packages/google_ml_kit/pubspec.yaml @@ -1,34 +1,34 @@ name: google_ml_kit description: "A Flutter plugin to use all APIs from Google's standalone ML Kit for mobile platforms." -version: 0.20.0 +version: 0.20.1 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_ml_kit environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: sdk: flutter # Vision APIs - google_mlkit_commons: ^0.11.0 - google_mlkit_barcode_scanning: ^0.14.1 - google_mlkit_digital_ink_recognition: ^0.14.1 - google_mlkit_face_detection: ^0.13.1 - google_mlkit_face_mesh_detection: ^0.4.1 - google_mlkit_image_labeling: ^0.14.1 - google_mlkit_object_detection: ^0.15.0 - google_mlkit_pose_detection: ^0.14.0 - google_mlkit_selfie_segmentation: ^0.10.0 - google_mlkit_text_recognition: ^0.15.0 + google_mlkit_commons: ^0.11.1 + google_mlkit_barcode_scanning: ^0.14.2 + google_mlkit_digital_ink_recognition: ^0.14.2 + google_mlkit_face_detection: ^0.13.2 + google_mlkit_face_mesh_detection: ^0.4.2 + google_mlkit_image_labeling: ^0.14.2 + google_mlkit_object_detection: ^0.15.1 + google_mlkit_pose_detection: ^0.14.1 + google_mlkit_selfie_segmentation: ^0.10.1 + google_mlkit_text_recognition: ^0.15.1 # Natural Language APIs - google_mlkit_entity_extraction: ^0.15.1 - google_mlkit_language_id: ^0.13.0 - google_mlkit_translation: ^0.13.0 - google_mlkit_smart_reply: ^0.13.0 + google_mlkit_entity_extraction: ^0.15.3 + google_mlkit_language_id: ^0.13.1 + google_mlkit_translation: ^0.13.1 + google_mlkit_smart_reply: ^0.13.1 dev_dependencies: flutter_test: diff --git a/packages/google_mlkit_barcode_scanning/CHANGELOG.md b/packages/google_mlkit_barcode_scanning/CHANGELOG.md index 30c8ff79..59e51ba1 100644 --- a/packages/google_mlkit_barcode_scanning/CHANGELOG.md +++ b/packages/google_mlkit_barcode_scanning/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.14.2 + +* Update Android native library `com.google.mlkit:barcode-scanning` to 17.3.0 +* Update iOS native library `GoogleMLKit/BarcodeScanning` to 9.0.0 + ## 0.14.1 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning.podspec b/packages/google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning.podspec index 82ea00b1..0fa21e68 100644 --- a/packages/google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning.podspec +++ b/packages/google_mlkit_barcode_scanning/ios/google_mlkit_barcode_scanning.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/BarcodeScanning', '~> 7.0.0' + s.dependency 'GoogleMLKit/BarcodeScanning', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_barcode_scanning/lib/src/barcode_scanner.dart b/packages/google_mlkit_barcode_scanning/lib/src/barcode_scanner.dart index d92590e3..265af8af 100644 --- a/packages/google_mlkit_barcode_scanning/lib/src/barcode_scanner.dart +++ b/packages/google_mlkit_barcode_scanning/lib/src/barcode_scanner.dart @@ -5,8 +5,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// A barcode scanner that scans and decodes barcodes from a given [InputImage]. class BarcodeScanner { - static const MethodChannel _channel = - MethodChannel('google_mlkit_barcode_scanning'); + static const MethodChannel _channel = MethodChannel( + 'google_mlkit_barcode_scanning', + ); /// List that restrict the scan to specific barcode formats. final List formats; @@ -23,7 +24,7 @@ class BarcodeScanner { final result = await _channel.invokeMethod('vision#startBarcodeScanner', { 'formats': formats.map((f) => f.rawValue).toList(), 'id': id, - 'imageData': inputImage.toJson() + 'imageData': inputImage.toJson(), }); final barcodesList = []; @@ -126,8 +127,9 @@ extension BarcodeFormatValue on BarcodeFormat { static BarcodeFormat fromRawValue(int rawValue) { return BarcodeFormat.values.firstWhere( - (element) => element.rawValue == rawValue, - orElse: () => BarcodeFormat.unknown); + (element) => element.rawValue == rawValue, + orElse: () => BarcodeFormat.unknown, + ); } } @@ -303,10 +305,10 @@ class BarcodeWifi extends BarcodeValue { /// Returns an instance of [BarcodeWifi] from a given [json]. factory BarcodeWifi.fromJson(Map json) => BarcodeWifi( - ssid: json['ssid'], - password: json['password'], - encryptionType: json['encryption'], - ); + ssid: json['ssid'], + password: json['password'], + encryptionType: json['encryption'], + ); } /// Stores url info of the bookmark obtained from a barcode. @@ -321,10 +323,8 @@ class BarcodeUrl extends BarcodeValue { BarcodeUrl({this.url, this.title}); /// Returns an instance of [BarcodeUrl] from a given [json]. - factory BarcodeUrl.fromJson(Map json) => BarcodeUrl( - url: json['url'], - title: json['title'], - ); + factory BarcodeUrl.fromJson(Map json) => + BarcodeUrl(url: json['url'], title: json['title']); } /// The type of email for [BarcodeEmail.type]. @@ -358,11 +358,11 @@ class BarcodeEmail extends BarcodeValue { /// Returns an instance of [BarcodeEmail] from a given [json]. factory BarcodeEmail.fromJson(Map json) => BarcodeEmail( - type: BarcodeEmailType.values[json['emailType']], - address: json['address'], - body: json['body'], - subject: json['subject'], - ); + type: BarcodeEmailType.values[json['emailType']], + address: json['address'], + body: json['body'], + subject: json['subject'], + ); } /// The type of phone number for [BarcodePhone.type]. @@ -396,9 +396,9 @@ class BarcodePhone extends BarcodeValue { /// Returns an instance of [BarcodePhone] from a given [json]. factory BarcodePhone.fromJson(Map json) => BarcodePhone( - type: BarcodePhoneType.values[json['phoneType']], - number: json['number'], - ); + type: BarcodePhoneType.values[json['phoneType']], + number: json['number'], + ); } /// Stores an SMS message obtained from a barcode. @@ -413,10 +413,8 @@ class BarcodeSMS extends BarcodeValue { BarcodeSMS({this.message, this.phoneNumber}); /// Returns an instance of [BarcodeSMS] from a given [json]. - factory BarcodeSMS.fromJson(Map json) => BarcodeSMS( - message: json['message'], - phoneNumber: json['number'], - ); + factory BarcodeSMS.fromJson(Map json) => + BarcodeSMS(message: json['message'], phoneNumber: json['number']); } /// Stores GPS coordinates obtained from a barcode. @@ -432,10 +430,7 @@ class BarcodeGeoPoint extends BarcodeValue { /// Returns an instance of [BarcodeGeoPoint] from a given [json]. factory BarcodeGeoPoint.fromJson(Map json) => - BarcodeGeoPoint( - latitude: json['latitude'], - longitude: json['longitude'], - ); + BarcodeGeoPoint(latitude: json['latitude'], longitude: json['longitude']); } /// Stores driver’s license or ID card data representation obtained from a barcode. diff --git a/packages/google_mlkit_barcode_scanning/pubspec.yaml b/packages/google_mlkit_barcode_scanning/pubspec.yaml index 47e5e4de..cd85d2a3 100644 --- a/packages/google_mlkit_barcode_scanning/pubspec.yaml +++ b/packages/google_mlkit_barcode_scanning/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_barcode_scanning description: "A Flutter plugin to use Google's ML Kit Barcode Scanning to read data encoded using most standard barcode formats." -version: 0.14.1 +version: 0.14.2 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_barcode_scanning environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_commons/CHANGELOG.md b/packages/google_mlkit_commons/CHANGELOG.md index cae39ece..baafcf9d 100644 --- a/packages/google_mlkit_commons/CHANGELOG.md +++ b/packages/google_mlkit_commons/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.11.1 + +* Update Android native library `com.google.mlkit:vision-common` to 17.3.0 +* Update iOS native library `MLKitVision` to 10.0.0 + ## 0.11.0 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_commons/ios/google_mlkit_commons.podspec b/packages/google_mlkit_commons/ios/google_mlkit_commons.podspec index 3ab95124..4927ec62 100644 --- a/packages/google_mlkit_commons/ios/google_mlkit_commons.podspec +++ b/packages/google_mlkit_commons/ios/google_mlkit_commons.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'MLKitVision' + s.dependency 'MLKitVision', '~> 10.0.0' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' s.static_framework = true diff --git a/packages/google_mlkit_commons/lib/src/input_image.dart b/packages/google_mlkit_commons/lib/src/input_image.dart index f4c1f0cb..77f0e6a3 100644 --- a/packages/google_mlkit_commons/lib/src/input_image.dart +++ b/packages/google_mlkit_commons/lib/src/input_image.dart @@ -42,10 +42,15 @@ class InputImage { } /// Creates an instance of [InputImage] using bytes. - factory InputImage.fromBytes( - {required Uint8List bytes, required InputImageMetadata metadata}) { + factory InputImage.fromBytes({ + required Uint8List bytes, + required InputImageMetadata metadata, + }) { return InputImage._( - bytes: bytes, type: InputImageType.bytes, metadata: metadata); + bytes: bytes, + type: InputImageType.bytes, + metadata: metadata, + ); } /// Creates an instance of [InputImage] from bitmap data. @@ -97,21 +102,17 @@ class InputImage { /// Returns a json representation of an instance of [InputImage]. Map toJson() => { - 'bytes': bytes, - 'type': type.name, - 'path': filePath, - 'metadata': metadata?.toJson(), - 'bitmapData': bitmapData, - 'rotation': rotation - }; + 'bytes': bytes, + 'type': type.name, + 'path': filePath, + 'metadata': metadata?.toJson(), + 'bitmapData': bitmapData, + 'rotation': rotation, + }; } /// The type of [InputImage]. -enum InputImageType { - file, - bytes, - bitmap, -} +enum InputImageType { file, bytes, bitmap } /// Data of image required when creating image from bytes. class InputImageMetadata { @@ -151,12 +152,12 @@ class InputImageMetadata { /// Returns a json representation of an instance of [InputImageMetadata]. Map toJson() => { - 'width': size.width, - 'height': size.height, - 'rotation': rotation.rawValue, - 'image_format': format.rawValue, - 'bytes_per_row': bytesPerRow, - }; + 'width': size.width, + 'height': size.height, + 'rotation': rotation.rawValue, + 'image_format': format.rawValue, + 'bytes_per_row': bytesPerRow, + }; } /// The camera rotation angle to be specified @@ -164,7 +165,7 @@ enum InputImageRotation { rotation0deg, rotation90deg, rotation180deg, - rotation270deg + rotation270deg, } extension InputImageRotationValue on InputImageRotation { @@ -183,8 +184,9 @@ extension InputImageRotationValue on InputImageRotation { static InputImageRotation? fromRawValue(int rawValue) { try { - return InputImageRotation.values - .firstWhere((element) => element.rawValue == rawValue); + return InputImageRotation.values.firstWhere( + (element) => element.rawValue == rawValue, + ); } catch (_) { return null; } @@ -228,8 +230,9 @@ extension InputImageFormatValue on InputImageFormat { static InputImageFormat? fromRawValue(int rawValue) { try { - return InputImageFormat.values - .firstWhere((element) => element.rawValue == rawValue); + return InputImageFormat.values.firstWhere( + (element) => element.rawValue == rawValue, + ); } catch (_) { return null; } diff --git a/packages/google_mlkit_commons/lib/src/model_manager.dart b/packages/google_mlkit_commons/lib/src/model_manager.dart index ef7b3520..356ed1d6 100644 --- a/packages/google_mlkit_commons/lib/src/model_manager.dart +++ b/packages/google_mlkit_commons/lib/src/model_manager.dart @@ -29,7 +29,7 @@ class ModelManager { final result = await channel.invokeMethod(method, { 'task': 'download', 'model': model, - 'wifi': isWifiRequired + 'wifi': isWifiRequired, }); return result.toString() == 'success'; } diff --git a/packages/google_mlkit_commons/pubspec.yaml b/packages/google_mlkit_commons/pubspec.yaml index 4c4d5eed..1a267328 100644 --- a/packages/google_mlkit_commons/pubspec.yaml +++ b/packages/google_mlkit_commons/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_commons description: "A Flutter plugin with commons files to implement google's standalone ml kit made for mobile platform." -version: 0.11.0 +version: 0.11.1 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_commons environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md b/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md index 3c96c051..71b7f56f 100644 --- a/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md +++ b/packages/google_mlkit_digital_ink_recognition/CHANGELOG.md @@ -1,5 +1,7 @@ ## 0.14.2 -# Update Google's ML Kit Digital Ink Recognition to version 19 + +* Update Android native library `com.google.mlkit:digital-ink-recognition` to 19.0.0 +* Update iOS native library `GoogleMLKit/DigitalInkRecognition` to 9.0.0 ## 0.14.1 diff --git a/packages/google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition.podspec b/packages/google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition.podspec index c623b53f..57462718 100644 --- a/packages/google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition.podspec +++ b/packages/google_mlkit_digital_ink_recognition/ios/google_mlkit_digital_ink_recognition.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/DigitalInkRecognition', '~> 7.0.0' + s.dependency 'GoogleMLKit/DigitalInkRecognition', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_digital_ink_recognition/lib/src/digital_ink_recognizer.dart b/packages/google_mlkit_digital_ink_recognition/lib/src/digital_ink_recognizer.dart index dd8a7854..81a0bb52 100644 --- a/packages/google_mlkit_digital_ink_recognition/lib/src/digital_ink_recognizer.dart +++ b/packages/google_mlkit_digital_ink_recognition/lib/src/digital_ink_recognizer.dart @@ -8,8 +8,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// Digital ink is the vector representation of what a user has written. /// It is composed of a sequence of strokes, each being a sequence of touch points (coordinates and timestamp). class DigitalInkRecognizer { - static const MethodChannel _channel = - MethodChannel('google_mlkit_digital_ink_recognizer'); + static const MethodChannel _channel = MethodChannel( + 'google_mlkit_digital_ink_recognizer', + ); /// Refers to language that is being processed. // Note that model should be a BCP 47 language tag from https://developers.google.com/ml-kit/vision/digital-ink-recognition/base-models?hl=en#text @@ -24,15 +25,17 @@ class DigitalInkRecognizer { /// Performs a recognition of the text written on screen. /// It takes an instance of [Ink] which refers to the user input as a list of [Stroke]. - Future> recognize(Ink ink, - {DigitalInkRecognitionContext? context}) async { + Future> recognize( + Ink ink, { + DigitalInkRecognitionContext? context, + }) async { final result = await _channel .invokeMethod('vision#startDigitalInkRecognizer', { - 'id': id, - 'ink': ink.toJson(), - 'context': context?._isValid == true ? context?.toJson() : null, - 'model': languageCode, - }); + 'id': id, + 'ink': ink.toJson(), + 'context': context?._isValid == true ? context?.toJson() : null, + 'model': languageCode, + }); final List candidates = []; for (final dynamic json in result) { @@ -64,9 +67,9 @@ class DigitalInkRecognitionContext { /// Returns a json representation of an instance of [WritingArea]. Map toJson() => { - 'preContext': preContext, - 'writingArea': writingArea?.toJson(), - }; + 'preContext': preContext, + 'writingArea': writingArea?.toJson(), + }; } /// The writing area is the area on the screen where the user can draw an ink. @@ -81,10 +84,7 @@ class WritingArea { WritingArea({required this.width, required this.height}); /// Returns a json representation of an instance of [WritingArea]. - Map toJson() => { - 'width': width, - 'height': height, - }; + Map toJson() => {'width': width, 'height': height}; } /// Represents the user input as a collection of [Stroke] and serves as input for the handwriting recognition task. @@ -94,8 +94,8 @@ class Ink { /// Returns a json representation of an instance of [Ink]. Map toJson() => { - 'strokes': strokes.map((stroke) => stroke.toJson()).toList(), - }; + 'strokes': strokes.map((stroke) => stroke.toJson()).toList(), + }; } /// Represents a sequence of touch points between a pen (resp. touch) down and pen (resp. touch) up event. @@ -105,8 +105,8 @@ class Stroke { /// Returns a json representation of an instance of [Stroke]. Map toJson() => { - 'points': points.map((point) => point.toJson()).toList(), - }; + 'points': points.map((point) => point.toJson()).toList(), + }; } /// A single touch point from the user. @@ -124,20 +124,17 @@ class StrokePoint { StrokePoint({required this.x, required this.y, required this.t}); /// Returns a json representation of an instance of [StrokePoint]. - Map toJson() => { - 'x': x, - 'y': y, - 't': t, - }; + Map toJson() => {'x': x, 'y': y, 't': t}; } /// A subclass of [ModelManager] that manages [DigitalInkRecognitionModel] required to process the image. class DigitalInkRecognizerModelManager extends ModelManager { /// Constructor to create an instance of [DigitalInkRecognizerModelManager]. DigitalInkRecognizerModelManager() - : super( - channel: DigitalInkRecognizer._channel, - method: 'vision#manageInkModels'); + : super( + channel: DigitalInkRecognizer._channel, + method: 'vision#manageInkModels', + ); } /// Individual recognition candidate. @@ -157,8 +154,5 @@ class RecognitionCandidate { /// Returns an instance of [RecognitionCandidate] from a given [json]. factory RecognitionCandidate.fromJson(Map json) => - RecognitionCandidate( - text: json['text'], - score: json['score'], - ); + RecognitionCandidate(text: json['text'], score: json['score']); } diff --git a/packages/google_mlkit_digital_ink_recognition/pubspec.yaml b/packages/google_mlkit_digital_ink_recognition/pubspec.yaml index 89da751f..966158e6 100644 --- a/packages/google_mlkit_digital_ink_recognition/pubspec.yaml +++ b/packages/google_mlkit_digital_ink_recognition/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_digital_ink_recognition description: "A Flutter plugin to use Google's ML Kit Digital Ink Recognition to recognize handwritten text on a digital surface in hundreds of languages, as well as classify sketches." -version: 0.14.1 +version: 0.14.2 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_digital_ink_recognition environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_document_scanner/CHANGELOG.md b/packages/google_mlkit_document_scanner/CHANGELOG.md index d434294c..c6d5b38f 100644 --- a/packages/google_mlkit_document_scanner/CHANGELOG.md +++ b/packages/google_mlkit_document_scanner/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.4.1 + +* Update Android native library `com.google.android.gms:play-services-mlkit-document-scanner` to 16.0.0 +* Note: iOS support is not available + ## 0.4.0 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart b/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart index 911b3765..ce4a91ca 100644 --- a/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart +++ b/packages/google_mlkit_document_scanner/lib/src/document_scanner.dart @@ -2,8 +2,9 @@ import 'package:flutter/services.dart'; /// A document scanner that allows to convert physical documents into digital formats. class DocumentScanner { - static const MethodChannel _channel = - MethodChannel('google_mlkit_document_scanner'); + static const MethodChannel _channel = MethodChannel( + 'google_mlkit_document_scanner', + ); /// Instance id. final id = DateTime.now().microsecondsSinceEpoch.toString(); @@ -17,10 +18,9 @@ class DocumentScanner { /// Starts the document scanner UI flow. Future scanDocument() async { final dynamic results = await _channel.invokeMapMethod( - 'vision#startDocumentScanner', { - 'options': options.toJson(), - 'id': id, - }); + 'vision#startDocumentScanner', + {'options': options.toJson(), 'id': id}, + ); return DocumentScanningResult.fromJson(results); } @@ -56,25 +56,18 @@ class DocumentScannerOptions { /// Returns a json representation of an instance of [DocumentScannerOptions]. Map toJson() => { - 'pageLimit': pageLimit, - 'formats': documentFormats.map((f) => f.name).toList(), - 'mode': mode.name, - 'isGalleryImport': isGalleryImport, - }; + 'pageLimit': pageLimit, + 'formats': documentFormats.map((f) => f.name).toList(), + 'mode': mode.name, + 'isGalleryImport': isGalleryImport, + }; } /// Result format for the scanner. -enum DocumentFormat { - jpeg, - pdf, -} +enum DocumentFormat { jpeg, pdf } /// Scanner mode which determines what features are enabled. -enum ScannerMode { - base, - filter, - full, -} +enum ScannerMode { base, filter, full } /// Result for document scanning. class DocumentScanningResult { @@ -118,7 +111,9 @@ class DocumentScanningResultPdf { /// Returns an instance of [DocumentScanningResultPdf] from a given [json]. factory DocumentScanningResultPdf.fromJson(Map json) { return DocumentScanningResultPdf( - pageCount: json['pageCount'], uri: json['uri']); + pageCount: json['pageCount'], + uri: json['uri'], + ); } @override diff --git a/packages/google_mlkit_document_scanner/pubspec.yaml b/packages/google_mlkit_document_scanner/pubspec.yaml index ec912ace..9eaa2bcd 100644 --- a/packages/google_mlkit_document_scanner/pubspec.yaml +++ b/packages/google_mlkit_document_scanner/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_document_scanner description: "A Flutter plugin to use the ML Kit document scanner API to easily add a document scanner feature to your app." -version: 0.4.0 +version: 0.4.1 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_document_scanner environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_entity_extraction/CHANGELOG.md b/packages/google_mlkit_entity_extraction/CHANGELOG.md index 9e666a77..eeea724c 100644 --- a/packages/google_mlkit_entity_extraction/CHANGELOG.md +++ b/packages/google_mlkit_entity_extraction/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.15.3 + +* Update Android native library `com.google.mlkit:entity-extraction` to 16.0.0-beta6 +* Update iOS native library `GoogleMLKit/EntityExtraction` to 9.0.0 + ## 0.15.2 * Update dependencies diff --git a/packages/google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction.podspec b/packages/google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction.podspec index 02e48621..f5e8a35e 100644 --- a/packages/google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction.podspec +++ b/packages/google_mlkit_entity_extraction/ios/google_mlkit_entity_extraction.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/EntityExtraction', '~> 7.0.0' + s.dependency 'GoogleMLKit/EntityExtraction', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_entity_extraction/lib/src/entity_extractor.dart b/packages/google_mlkit_entity_extraction/lib/src/entity_extractor.dart index 6b1746ed..bcb304a4 100644 --- a/packages/google_mlkit_entity_extraction/lib/src/entity_extractor.dart +++ b/packages/google_mlkit_entity_extraction/lib/src/entity_extractor.dart @@ -3,8 +3,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// A class that extracts entities from the given input text. class EntityExtractor { - static const MethodChannel _channel = - MethodChannel('google_mlkit_entity_extractor'); + static const MethodChannel _channel = MethodChannel( + 'google_mlkit_entity_extractor', + ); /// The language used when parsing entities in the text. final EntityExtractorLanguage language; @@ -36,12 +37,14 @@ class EntityExtractor { }; final result = await _channel.invokeMethod( - 'nlp#startEntityExtractor', { - 'parameters': parameters, - 'id': id, - 'text': text, - 'language': language.name - }); + 'nlp#startEntityExtractor', + { + 'parameters': parameters, + 'id': id, + 'text': text, + 'language': language.name, + }, + ); final annotations = []; for (final dynamic json in result) { @@ -59,9 +62,10 @@ class EntityExtractor { class EntityExtractorModelManager extends ModelManager { /// Constructor to create an instance of [EntityExtractorModelManager]. EntityExtractorModelManager() - : super( - channel: EntityExtractor._channel, - method: 'nlp#manageEntityExtractionModels'); + : super( + channel: EntityExtractor._channel, + method: 'nlp#manageEntityExtractionModels', + ); } /// Languages supported by [EntityExtractor]. @@ -98,11 +102,12 @@ class EntityAnnotation { final List entities; /// Constructor to create an instance of [EntityAnnotation]. - EntityAnnotation( - {required this.start, - required this.end, - required this.text, - required this.entities}); + EntityAnnotation({ + required this.start, + required this.end, + required this.text, + required this.entities, + }); /// Returns an instance of [EntityAnnotation] from a given [json]. factory EntityAnnotation.fromJson(Map json) { @@ -120,43 +125,65 @@ class EntityAnnotation { entities.add(AddressEntity(raw)); break; case EntityType.dateTime: - entities.add(DateTimeEntity(raw, + entities.add( + DateTimeEntity( + raw, dateTimeGranularity: DateTimeGranularity .values[entity['dateTimeGranularity'].toInt()], - timestamp: entity['timestamp'].toInt())); + timestamp: entity['timestamp'].toInt(), + ), + ); break; case EntityType.email: entities.add(EmailEntity(raw)); break; case EntityType.flightNumber: - entities.add(FlightNumberEntity(raw, - airlineCode: entity['code'], flightNumber: entity['number'])); + entities.add( + FlightNumberEntity( + raw, + airlineCode: entity['code'], + flightNumber: entity['number'], + ), + ); break; case EntityType.iban: - entities.add(IbanEntity(raw, - iban: entity['iban'], countryCode: entity['code'])); + entities.add( + IbanEntity(raw, iban: entity['iban'], countryCode: entity['code']), + ); break; case EntityType.isbn: entities.add(IsbnEntity(raw, isbn: entity['isbn'])); break; case EntityType.money: - entities.add(MoneyEntity(raw, + entities.add( + MoneyEntity( + raw, fractionPart: entity['fraction'].toInt(), integerPart: entity['integer'].toInt(), - unnormalizedCurrency: entity['unnormalized'])); + unnormalizedCurrency: entity['unnormalized'], + ), + ); break; case EntityType.paymentCard: - entities.add(PaymentCardEntity(raw, + entities.add( + PaymentCardEntity( + raw, network: PaymentCardNetwork.values[entity['network'].toInt()], - number: entity['number'])); + number: entity['number'], + ), + ); break; case EntityType.phone: entities.add(PhoneEntity(raw)); break; case EntityType.trackingNumber: - entities.add(TrackingNumberEntity(raw, + entities.add( + TrackingNumberEntity( + raw, carrier: TrackingCarrier.values[entity['carrier'].toInt()], - number: entity['number'])); + number: entity['number'], + ), + ); break; case EntityType.url: entities.add(UrlEntity(raw)); @@ -164,10 +191,11 @@ class EntityAnnotation { } } return EntityAnnotation( - start: json['start'], - end: json['end'], - text: json['text'], - entities: entities); + start: json['start'], + end: json['end'], + text: json['text'], + entities: entities, + ); } @override @@ -211,7 +239,7 @@ abstract class Entity { class AddressEntity extends Entity { /// Constructor to create an instance of [AddressEntity]. AddressEntity(String rawValue) - : super(rawValue: rawValue, type: EntityType.address); + : super(rawValue: rawValue, type: EntityType.address); } /// The precision of a timestamp that was extracted from text. @@ -235,9 +263,11 @@ class DateTimeEntity extends Entity { final int timestamp; /// Constructor to create an instance of [DateTimeEntity]. - DateTimeEntity(String rawValue, - {required this.dateTimeGranularity, required this.timestamp}) - : super(rawValue: rawValue, type: EntityType.dateTime); + DateTimeEntity( + String rawValue, { + required this.dateTimeGranularity, + required this.timestamp, + }) : super(rawValue: rawValue, type: EntityType.dateTime); @override String toString() => @@ -248,7 +278,7 @@ class DateTimeEntity extends Entity { class EmailEntity extends Entity { /// Constructor to create an instance of [EmailEntity]. EmailEntity(String rawValue) - : super(rawValue: rawValue, type: EntityType.email); + : super(rawValue: rawValue, type: EntityType.email); } /// An flight number entity extracted from text. @@ -260,9 +290,11 @@ class FlightNumberEntity extends Entity { final String flightNumber; /// Constructor to create an instance of [FlightNumberEntity]. - FlightNumberEntity(String rawValue, - {required this.airlineCode, required this.flightNumber}) - : super(rawValue: rawValue, type: EntityType.flightNumber); + FlightNumberEntity( + String rawValue, { + required this.airlineCode, + required this.flightNumber, + }) : super(rawValue: rawValue, type: EntityType.flightNumber); @override String toString() => @@ -279,7 +311,7 @@ class IbanEntity extends Entity { /// Constructor to create an instance of [IbanEntity]. IbanEntity(String rawValue, {required this.iban, required this.countryCode}) - : super(rawValue: rawValue, type: EntityType.iban); + : super(rawValue: rawValue, type: EntityType.iban); @override String toString() => @@ -293,7 +325,7 @@ class IsbnEntity extends Entity { /// Constructor to create an instance of [IsbnEntity]. IsbnEntity(String rawValue, {required this.isbn}) - : super(rawValue: rawValue, type: EntityType.isbn); + : super(rawValue: rawValue, type: EntityType.isbn); @override String toString() => '{type: ${type.name}, isbn: $isbn}'; @@ -311,11 +343,12 @@ class MoneyEntity extends Entity { final String unnormalizedCurrency; /// Constructor to create an instance of [MoneyEntity]. - MoneyEntity(String rawValue, - {required this.fractionPart, - required this.integerPart, - required this.unnormalizedCurrency}) - : super(rawValue: rawValue, type: EntityType.money); + MoneyEntity( + String rawValue, { + required this.fractionPart, + required this.integerPart, + required this.unnormalizedCurrency, + }) : super(rawValue: rawValue, type: EntityType.money); @override String toString() => '{type: ${type.name}, currency: $unnormalizedCurrency}'; @@ -346,9 +379,11 @@ class PaymentCardEntity extends Entity { final String number; /// Constructor to create an instance of [PaymentCardEntity]. - PaymentCardEntity(String rawValue, - {required this.network, required this.number}) - : super(rawValue: rawValue, type: EntityType.paymentCard); + PaymentCardEntity( + String rawValue, { + required this.network, + required this.number, + }) : super(rawValue: rawValue, type: EntityType.paymentCard); @override String toString() => @@ -359,7 +394,7 @@ class PaymentCardEntity extends Entity { class PhoneEntity extends Entity { /// Constructor to create an instance of [PhoneEntity]. PhoneEntity(String rawValue) - : super(rawValue: rawValue, type: EntityType.phone); + : super(rawValue: rawValue, type: EntityType.phone); } /// The supported parcel tracking carriers that can be detected. @@ -387,9 +422,11 @@ class TrackingNumberEntity extends Entity { final String number; /// Constructor to create an instance of [TrackingNumberEntity]. - TrackingNumberEntity(String rawValue, - {required this.carrier, required this.number}) - : super(rawValue: rawValue, type: EntityType.trackingNumber); + TrackingNumberEntity( + String rawValue, { + required this.carrier, + required this.number, + }) : super(rawValue: rawValue, type: EntityType.trackingNumber); @override String toString() => diff --git a/packages/google_mlkit_entity_extraction/pubspec.yaml b/packages/google_mlkit_entity_extraction/pubspec.yaml index 8fb877c6..8a49d982 100644 --- a/packages/google_mlkit_entity_extraction/pubspec.yaml +++ b/packages/google_mlkit_entity_extraction/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_entity_extraction description: "A Flutter plugin to use Google's ML Kit Entity Extractor API to recognize specific entities within static text." -version: 0.15.2 +version: 0.15.3 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_entity_extraction environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_face_detection/CHANGELOG.md b/packages/google_mlkit_face_detection/CHANGELOG.md index ef098830..1c07b258 100644 --- a/packages/google_mlkit_face_detection/CHANGELOG.md +++ b/packages/google_mlkit_face_detection/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.13.2 + +* Update Android native library `com.google.mlkit:face-detection` to 16.1.7 +* Update iOS native library `GoogleMLKit/FaceDetection` to 9.0.0 + ## 0.13.1 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_face_detection/ios/google_mlkit_face_detection.podspec b/packages/google_mlkit_face_detection/ios/google_mlkit_face_detection.podspec index d367628b..826b7c84 100644 --- a/packages/google_mlkit_face_detection/ios/google_mlkit_face_detection.podspec +++ b/packages/google_mlkit_face_detection/ios/google_mlkit_face_detection.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/FaceDetection', '~> 7.0.0' + s.dependency 'GoogleMLKit/FaceDetection', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_face_detection/lib/src/face_detector.dart b/packages/google_mlkit_face_detection/lib/src/face_detector.dart index 70fa8f81..24a045e2 100644 --- a/packages/google_mlkit_face_detection/lib/src/face_detector.dart +++ b/packages/google_mlkit_face_detection/lib/src/face_detector.dart @@ -6,8 +6,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// A face detector that detects faces in a given [InputImage]. class FaceDetector { - static const services.MethodChannel _channel = - services.MethodChannel('google_mlkit_face_detector'); + static const services.MethodChannel _channel = services.MethodChannel( + 'google_mlkit_face_detector', + ); /// The options for the face detector. final FaceDetectorOptions options; @@ -21,11 +22,13 @@ class FaceDetector { /// Processes the given image for face detection. Future> processImage(InputImage inputImage) async { final result = await _channel.invokeListMethod( - 'vision#startFaceDetector', { - 'options': options.toJson(), - 'id': id, - 'imageData': inputImage.toJson(), - }); + 'vision#startFaceDetector', + { + 'options': options.toJson(), + 'id': id, + 'imageData': inputImage.toJson(), + }, + ); final List faces = []; for (final dynamic json in result!) { @@ -55,8 +58,8 @@ class FaceDetectorOptions { this.enableTracking = false, this.minFaceSize = 0.1, this.performanceMode = FaceDetectorMode.fast, - }) : assert(minFaceSize >= 0.0), - assert(minFaceSize <= 1.0); + }) : assert(minFaceSize >= 0.0), + assert(minFaceSize <= 1.0); /// Whether to run additional classifiers for characterizing attributes. /// @@ -87,13 +90,13 @@ class FaceDetectorOptions { /// Returns a json representation of an instance of [FaceDetectorOptions]. Map toJson() => { - 'enableClassification': enableClassification, - 'enableLandmarks': enableLandmarks, - 'enableContours': enableContours, - 'enableTracking': enableTracking, - 'minFaceSize': minFaceSize, - 'mode': performanceMode.name, - }; + 'enableClassification': enableClassification, + 'enableLandmarks': enableLandmarks, + 'enableContours': enableContours, + 'enableTracking': enableTracking, + 'minFaceSize': minFaceSize, + 'mode': performanceMode.name, + }; } /// A human face detected in an image. @@ -181,42 +184,46 @@ class Face { /// Returns an instance of [Face] from a given [json]. factory Face.fromJson(Map json) => Face( - boundingBox: RectJson.fromJson(json['rect']), - headEulerAngleX: json['headEulerAngleX'], - headEulerAngleY: json['headEulerAngleY'], - headEulerAngleZ: json['headEulerAngleZ'], - leftEyeOpenProbability: json['leftEyeOpenProbability'], - rightEyeOpenProbability: json['rightEyeOpenProbability'], - smilingProbability: json['smilingProbability'], - trackingId: json['trackingId'], - landmarks: Map.fromIterables( - FaceLandmarkType.values, - FaceLandmarkType.values.map((FaceLandmarkType type) { - final List? pos = json['landmarks'][type.name]; - return (pos == null) - ? null - : FaceLandmark( - type: type, - position: Point(pos[0].toInt(), pos[1].toInt()), - ); - })), - contours: Map.fromIterables( - FaceContourType.values, - FaceContourType.values.map((FaceContourType type) { - /// added empty map to pass the tests - final List? arr = - (json['contours'] ?? {})[type.name]; - return (arr == null) - ? null - : FaceContour( - type: type, - points: arr - .map>((dynamic pos) => - Point(pos[0].toInt(), pos[1].toInt())) - .toList(), - ); - })), - ); + boundingBox: RectJson.fromJson(json['rect']), + headEulerAngleX: json['headEulerAngleX'], + headEulerAngleY: json['headEulerAngleY'], + headEulerAngleZ: json['headEulerAngleZ'], + leftEyeOpenProbability: json['leftEyeOpenProbability'], + rightEyeOpenProbability: json['rightEyeOpenProbability'], + smilingProbability: json['smilingProbability'], + trackingId: json['trackingId'], + landmarks: Map.fromIterables( + FaceLandmarkType.values, + FaceLandmarkType.values.map((FaceLandmarkType type) { + final List? pos = json['landmarks'][type.name]; + return (pos == null) + ? null + : FaceLandmark( + type: type, + position: Point(pos[0].toInt(), pos[1].toInt()), + ); + }), + ), + contours: Map.fromIterables( + FaceContourType.values, + FaceContourType.values.map((FaceContourType type) { + /// added empty map to pass the tests + final List? arr = + (json['contours'] ?? {})[type.name]; + return (arr == null) + ? null + : FaceContour( + type: type, + points: arr + .map>( + (dynamic pos) => + Point(pos[0].toInt(), pos[1].toInt()), + ) + .toList(), + ); + }), + ), + ); } /// A landmark on a human face detected in an image. @@ -253,10 +260,7 @@ class FaceContour { /// /// Accurate tends to detect more faces and may be more precise in determining /// values such as position, at the cost of speed. -enum FaceDetectorMode { - accurate, - fast, -} +enum FaceDetectorMode { accurate, fast } /// Available face landmarks detected by [FaceDetector]. enum FaceLandmarkType { @@ -288,5 +292,5 @@ enum FaceContourType { noseBridge, noseBottom, leftCheek, - rightCheek + rightCheek, } diff --git a/packages/google_mlkit_face_detection/pubspec.yaml b/packages/google_mlkit_face_detection/pubspec.yaml index 8515c0f5..41c86d88 100644 --- a/packages/google_mlkit_face_detection/pubspec.yaml +++ b/packages/google_mlkit_face_detection/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_face_detection description: "A Flutter plugin to use Google's ML Kit Face Detection to detect faces in an image, identify key facial features, and get the contours of detected faces." -version: 0.13.1 +version: 0.13.2 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_face_detection environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_face_mesh_detection/CHANGELOG.md b/packages/google_mlkit_face_mesh_detection/CHANGELOG.md index 592cf4c7..8b198ce6 100644 --- a/packages/google_mlkit_face_mesh_detection/CHANGELOG.md +++ b/packages/google_mlkit_face_mesh_detection/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.4.2 + +* Update Android native library `com.google.mlkit:face-mesh-detection` to 16.0.0-beta3 +* Update iOS native library `GoogleMLKit/FaceMeshDetection` to 9.0.0 (Note: iOS support is not available) + ## 0.4.1 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_face_mesh_detection/lib/src/face_mesh_detector.dart b/packages/google_mlkit_face_mesh_detection/lib/src/face_mesh_detector.dart index d47aded9..b81a15f6 100644 --- a/packages/google_mlkit_face_mesh_detection/lib/src/face_mesh_detector.dart +++ b/packages/google_mlkit_face_mesh_detection/lib/src/face_mesh_detector.dart @@ -5,8 +5,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// A face mesh detector that detects a face mesh in a given [InputImage]. class FaceMeshDetector { - static const services.MethodChannel _channel = - services.MethodChannel('google_mlkit_face_mesh_detector'); + static const services.MethodChannel _channel = services.MethodChannel( + 'google_mlkit_face_mesh_detector', + ); /// Instance id. final id = DateTime.now().microsecondsSinceEpoch.toString(); @@ -20,11 +21,13 @@ class FaceMeshDetector { /// Processes the given image for face mesh detection. Future> processImage(InputImage inputImage) async { final result = await _channel.invokeListMethod( - 'vision#startFaceMeshDetector', { - 'id': id, - 'option': option.index, - 'imageData': inputImage.toJson(), - }); + 'vision#startFaceMeshDetector', + { + 'id': id, + 'option': option.index, + 'imageData': inputImage.toJson(), + }, + ); final List meshes = []; for (final dynamic json in result!) { @@ -54,41 +57,43 @@ class FaceMesh { final Map?> contours; /// Creates a face mesh. - FaceMesh( - {required this.boundingBox, - required this.points, - required this.triangles, - required this.contours}); + FaceMesh({ + required this.boundingBox, + required this.points, + required this.triangles, + required this.contours, + }); /// Returns an instance of [FaceMesh] from a given [json]. factory FaceMesh.fromJson(Map json) => FaceMesh( - boundingBox: RectJson.fromJson(json['rect']), - points: json['points'] - .map((element) { - return FaceMeshPoint.fromJson(element); - }) - .cast() - .toList(), - triangles: json['triangles'] - .map((element) { - return FaceMeshTriangle.fromJson(element); - }) - .cast() - .toList(), - contours: Map>.fromIterables( - FaceMeshContourType.values, - FaceMeshContourType.values.map((FaceMeshContourType type) { - final List? arr = (json['contours'] ?? {})[type.index]; - return (arr == null) - ? [] - : arr + boundingBox: RectJson.fromJson(json['rect']), + points: json['points'] + .map((element) { + return FaceMeshPoint.fromJson(element); + }) + .cast() + .toList(), + triangles: json['triangles'] + .map((element) { + return FaceMeshTriangle.fromJson(element); + }) + .cast() + .toList(), + contours: Map>.fromIterables( + FaceMeshContourType.values, + FaceMeshContourType.values.map((FaceMeshContourType type) { + final List? arr = (json['contours'] ?? {})[type.index]; + return (arr == null) + ? [] + : arr .map((element) { return FaceMeshPoint.fromJson(element); }) .cast() .toList(); - })), - ); + }), + ), + ); } /// Represents a 3D point in face mesh, by index and PointF3D. @@ -115,11 +120,11 @@ class FaceMeshPoint { /// Returns an instance of [FaceMeshPoint] from a given [json]. factory FaceMeshPoint.fromJson(Map json) => FaceMeshPoint( - index: json['index'], - x: json['x'], - y: json['y'], - z: json['z'], - ); + index: json['index'], + x: json['x'], + y: json['y'], + z: json['z'], + ); } /// Represents a triangle with 3 generic points. @@ -132,12 +137,13 @@ class FaceMeshTriangle { /// Returns an instance of [FaceMeshTriangle] from a given [json]. factory FaceMeshTriangle.fromJson(List json) => FaceMeshTriangle( - points: json - .map((element) { - return FaceMeshPoint.fromJson(element); - }) - .cast() - .toList()); + points: json + .map((element) { + return FaceMeshPoint.fromJson(element); + }) + .cast() + .toList(), + ); } /// Options for [FaceMeshDetector]. diff --git a/packages/google_mlkit_face_mesh_detection/pubspec.yaml b/packages/google_mlkit_face_mesh_detection/pubspec.yaml index 881fc2dc..21ea8a20 100644 --- a/packages/google_mlkit_face_mesh_detection/pubspec.yaml +++ b/packages/google_mlkit_face_mesh_detection/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_face_mesh_detection description: "A Flutter plugin to use Google's ML Kit Face Mesh Detection." -version: 0.4.1 +version: 0.4.2 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_face_mesh_detection environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_image_labeling/CHANGELOG.md b/packages/google_mlkit_image_labeling/CHANGELOG.md index 9d6028cf..c6896532 100644 --- a/packages/google_mlkit_image_labeling/CHANGELOG.md +++ b/packages/google_mlkit_image_labeling/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.14.2 + +* Update Android native library `com.google.mlkit:image-labeling` to 17.0.9 +* Update Android native library `com.google.mlkit:image-labeling-custom` to 17.0.3 +* Update iOS native library `GoogleMLKit/ImageLabeling` to 9.0.0 +* Update iOS native library `GoogleMLKit/ImageLabelingCustom` to 9.0.0 + ## 0.14.1 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling.podspec b/packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling.podspec index 980dfaff..0a1f703c 100644 --- a/packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling.podspec +++ b/packages/google_mlkit_image_labeling/ios/google_mlkit_image_labeling.podspec @@ -15,8 +15,8 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/ImageLabeling', '~> 7.0.0' - s.dependency 'GoogleMLKit/ImageLabelingCustom', '~> 7.0.0' + s.dependency 'GoogleMLKit/ImageLabeling', '~> 9.0.0' + s.dependency 'GoogleMLKit/ImageLabelingCustom', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart b/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart index 4fc8d3ad..ac07baa5 100644 --- a/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart +++ b/packages/google_mlkit_image_labeling/lib/src/image_labeler.dart @@ -3,8 +3,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// An image labeler that processes and labels [InputImage]. class ImageLabeler { - static const MethodChannel _channel = - MethodChannel('google_mlkit_image_labeler'); + static const MethodChannel _channel = MethodChannel( + 'google_mlkit_image_labeler', + ); /// The options for the image labeler. final ImageLabelerOptions options; @@ -18,11 +19,13 @@ class ImageLabeler { /// Processes the given image for image labeling, it returns a List of [ImageLabel]. Future> processImage(InputImage inputImage) async { final result = await _channel.invokeMethod( - 'vision#startImageLabelDetector', { - 'options': options.toJson(), - 'id': id, - 'imageData': inputImage.toJson() - }); + 'vision#startImageLabelDetector', + { + 'options': options.toJson(), + 'id': id, + 'imageData': inputImage.toJson(), + }, + ); final imageLabels = []; for (final dynamic json in result) { @@ -38,11 +41,7 @@ class ImageLabeler { } /// Type of [ImageLabeler]. -enum ImageLabelerType { - base, - local, - remote, -} +enum ImageLabelerType { base, local, remote } /// Base options for [ImageLabeler]. class ImageLabelerOptions { @@ -60,9 +59,9 @@ class ImageLabelerOptions { /// Returns a json representation of an instance of [ImageLabelerOptions]. Map toJson() => { - 'confidenceThreshold': confidenceThreshold, - 'type': type.name, - }; + 'confidenceThreshold': confidenceThreshold, + 'type': type.name, + }; } /// Options for [ImageLabeler] using a custom local model. @@ -79,17 +78,20 @@ class LocalLabelerOptions extends ImageLabelerOptions { final ImageLabelerType type = ImageLabelerType.local; /// Constructor to create an instance of [LocalLabelerOptions]. - LocalLabelerOptions( - {super.confidenceThreshold, required this.modelPath, this.maxCount = 10}); + LocalLabelerOptions({ + super.confidenceThreshold, + required this.modelPath, + this.maxCount = 10, + }); /// Returns a json representation of an instance of [LocalLabelerOptions]. @override Map toJson() => { - 'confidenceThreshold': confidenceThreshold, - 'type': type.name, - 'path': modelPath, - 'maxCount': maxCount - }; + 'confidenceThreshold': confidenceThreshold, + 'type': type.name, + 'path': modelPath, + 'maxCount': maxCount, + }; } /// Options for [ImageLabeler] using a Firebase model. @@ -106,26 +108,30 @@ class FirebaseLabelerOption extends ImageLabelerOptions { final ImageLabelerType type = ImageLabelerType.remote; /// Constructor to create an instance of [FirebaseLabelerOption]. - FirebaseLabelerOption( - {super.confidenceThreshold, required this.modelName, this.maxCount = 10}); + FirebaseLabelerOption({ + super.confidenceThreshold, + required this.modelName, + this.maxCount = 10, + }); /// Returns a json representation of an instance of [FirebaseLabelerOption]. @override Map toJson() => { - 'confidenceThreshold': confidenceThreshold, - 'type': type.name, - 'modelName': modelName, - 'maxCount': maxCount - }; + 'confidenceThreshold': confidenceThreshold, + 'type': type.name, + 'modelName': modelName, + 'maxCount': maxCount, + }; } /// A subclass of [ModelManager] that manages [FirebaseModelSource] required to process the image. class FirebaseImageLabelerModelManager extends ModelManager { /// Constructor to create an instance of [FirebaseImageLabelerModelManager]. FirebaseImageLabelerModelManager() - : super( - channel: ImageLabeler._channel, - method: 'vision#manageFirebaseModels'); + : super( + channel: ImageLabeler._channel, + method: 'vision#manageFirebaseModels', + ); } /// Represents a label detected in an image. @@ -140,13 +146,16 @@ class ImageLabel { final int index; /// Constructor to create an instance of [ImageLabel]. - ImageLabel( - {required this.confidence, required this.label, required this.index}); + ImageLabel({ + required this.confidence, + required this.label, + required this.index, + }); /// Returns an instance of [ImageLabel] from a given [json]. factory ImageLabel.fromJson(Map json) => ImageLabel( - confidence: json['confidence'], - label: json['text'], - index: json['index'], - ); + confidence: json['confidence'], + label: json['text'], + index: json['index'], + ); } diff --git a/packages/google_mlkit_image_labeling/pubspec.yaml b/packages/google_mlkit_image_labeling/pubspec.yaml index c70eefda..3ffba799 100644 --- a/packages/google_mlkit_image_labeling/pubspec.yaml +++ b/packages/google_mlkit_image_labeling/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_image_labeling description: "A Flutter plugin to use Google's ML Kit Image Labeling to detect and extract information about entities in an image across a broad group of categories." -version: 0.14.1 +version: 0.14.2 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_image_labeling environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_language_id/CHANGELOG.md b/packages/google_mlkit_language_id/CHANGELOG.md index 5eca9e6b..ca34ca0e 100644 --- a/packages/google_mlkit_language_id/CHANGELOG.md +++ b/packages/google_mlkit_language_id/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.13.1 + +* Update Android native library `com.google.mlkit:language-id` to 17.0.6 +* Update iOS native library `GoogleMLKit/LanguageID` to 9.0.0 + ## 0.13.0 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_language_id/ios/google_mlkit_language_id.podspec b/packages/google_mlkit_language_id/ios/google_mlkit_language_id.podspec index cdba94ae..87a928ac 100644 --- a/packages/google_mlkit_language_id/ios/google_mlkit_language_id.podspec +++ b/packages/google_mlkit_language_id/ios/google_mlkit_language_id.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/LanguageID', '~> 7.0.0' + s.dependency 'GoogleMLKit/LanguageID', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_language_id/lib/src/language_identifier.dart b/packages/google_mlkit_language_id/lib/src/language_identifier.dart index 598d0c18..010f6810 100644 --- a/packages/google_mlkit_language_id/lib/src/language_identifier.dart +++ b/packages/google_mlkit_language_id/lib/src/language_identifier.dart @@ -2,8 +2,9 @@ import 'package:flutter/services.dart'; /// A class that identifies the main language or possible languages for the given text. class LanguageIdentifier { - static const MethodChannel _channel = - MethodChannel('google_mlkit_language_identifier'); + static const MethodChannel _channel = MethodChannel( + 'google_mlkit_language_identifier', + ); /// This code is returned when no language could be determined. final String undeterminedLanguageCode = 'und'; @@ -25,11 +26,11 @@ class LanguageIdentifier { Future identifyLanguage(String text) async { final result = await _channel .invokeMethod('nlp#startLanguageIdentifier', { - 'text': text, - 'possibleLanguages': false, - 'confidence': confidenceThreshold, - 'id': id, - }); + 'text': text, + 'possibleLanguages': false, + 'confidence': confidenceThreshold, + 'id': id, + }); return result.toString(); } @@ -38,14 +39,15 @@ class LanguageIdentifier { /// If no language could be determined then [undeterminedLanguageCode] is returned. /// More information: https://developers.google.com/ml-kit/language/identification Future> identifyPossibleLanguages( - String text) async { + String text, + ) async { final result = await _channel .invokeMethod('nlp#startLanguageIdentifier', { - 'text': text, - 'possibleLanguages': true, - 'confidence': confidenceThreshold, - 'id': id, - }); + 'text': text, + 'possibleLanguages': true, + 'confidence': confidenceThreshold, + 'id': id, + }); final languages = []; for (final dynamic json in result) { diff --git a/packages/google_mlkit_language_id/pubspec.yaml b/packages/google_mlkit_language_id/pubspec.yaml index e067ef13..1a37a468 100644 --- a/packages/google_mlkit_language_id/pubspec.yaml +++ b/packages/google_mlkit_language_id/pubspec.yaml @@ -1,12 +1,12 @@ name: google_mlkit_language_id description: "A Flutter plugin to use Google's ML Kit Language Identification to determine the language of a string of text." -version: 0.13.0 +version: 0.13.1 homepage: https://github.com/flutter-ml/google_ml_kit_flutter repository: https://github.com/flutter-ml/google_ml_kit_flutter/tree/master/packages/google_mlkit_language_id environment: - sdk: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: diff --git a/packages/google_mlkit_object_detection/CHANGELOG.md b/packages/google_mlkit_object_detection/CHANGELOG.md index 070d2844..d65c6250 100644 --- a/packages/google_mlkit_object_detection/CHANGELOG.md +++ b/packages/google_mlkit_object_detection/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.15.1 + +* Update Android native library `com.google.mlkit:object-detection` to 17.0.2 +* Update Android native library `com.google.mlkit:object-detection-custom` to 17.0.2 +* Update iOS native library `GoogleMLKit/ObjectDetection` to 9.0.0 +* Update iOS native library `GoogleMLKit/ObjectDetectionCustom` to 9.0.0 + ## 0.15.0 * Increase android sdk compile version to 35 diff --git a/packages/google_mlkit_object_detection/ios/google_mlkit_object_detection.podspec b/packages/google_mlkit_object_detection/ios/google_mlkit_object_detection.podspec index 1c128fdf..948fbf88 100644 --- a/packages/google_mlkit_object_detection/ios/google_mlkit_object_detection.podspec +++ b/packages/google_mlkit_object_detection/ios/google_mlkit_object_detection.podspec @@ -15,8 +15,8 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'GoogleMLKit/ObjectDetection', '~> 7.0.0' - s.dependency 'GoogleMLKit/ObjectDetectionCustom', '~> 7.0.0' + s.dependency 'GoogleMLKit/ObjectDetection', '~> 9.0.0' + s.dependency 'GoogleMLKit/ObjectDetectionCustom', '~> 9.0.0' s.dependency 'google_mlkit_commons' s.platform = :ios, '15.5' s.ios.deployment_target = '15.5' diff --git a/packages/google_mlkit_object_detection/lib/src/object_detector.dart b/packages/google_mlkit_object_detection/lib/src/object_detector.dart index 2385e164..9642ea68 100644 --- a/packages/google_mlkit_object_detection/lib/src/object_detector.dart +++ b/packages/google_mlkit_object_detection/lib/src/object_detector.dart @@ -4,8 +4,9 @@ import 'package:google_mlkit_commons/google_mlkit_commons.dart'; /// An object detector and tracker that detects objects in an [InputImage] and supports tracking them. class ObjectDetector { - static const services.MethodChannel _channel = - services.MethodChannel('google_mlkit_object_detector'); + static const services.MethodChannel _channel = services.MethodChannel( + 'google_mlkit_object_detector', + ); /// The options for the detector. final ObjectDetectorOptions options; @@ -19,11 +20,13 @@ class ObjectDetector { /// Processes the given image for object detection and tracking. Future> processImage(InputImage inputImage) async { final result = await _channel.invokeMethod( - 'vision#startObjectDetector', { - 'id': id, - 'imageData': inputImage.toJson(), - 'options': options.toJson() - }); + 'vision#startObjectDetector', + { + 'id': id, + 'imageData': inputImage.toJson(), + 'options': options.toJson(), + }, + ); final objects = []; for (final dynamic json in result) { objects.add(DetectedObject.fromJson(json)); @@ -38,17 +41,10 @@ class ObjectDetector { } /// The mode for [ObjectDetector]. -enum DetectionMode { - stream, - single, -} +enum DetectionMode { stream, single } /// Type of [ObjectDetector]. -enum ObjectDetectorType { - base, - local, - remote, -} +enum ObjectDetectorType { base, local, remote } /// Options to configure the detector while using with base model. class ObjectDetectorOptions { @@ -69,18 +65,19 @@ class ObjectDetectorOptions { final bool multipleObjects; /// Constructor to create an instance of [ObjectDetectorOptions]. - ObjectDetectorOptions( - {required this.mode, - required this.classifyObjects, - required this.multipleObjects}); + ObjectDetectorOptions({ + required this.mode, + required this.classifyObjects, + required this.multipleObjects, + }); /// Returns a json representation of an instance of [ObjectDetectorOptions]. Map toJson() => { - 'mode': mode.index, - 'type': type.name, - 'classify': classifyObjects, - 'multiple': multipleObjects, - }; + 'mode': mode.index, + 'type': type.name, + 'classify': classifyObjects, + 'multiple': multipleObjects, + }; } /// Options to configure the detector while using a local custom model. @@ -104,25 +101,26 @@ class LocalObjectDetectorOptions extends ObjectDetectorOptions { final String modelPath; /// Constructor to create an instance of [LocalObjectDetectorOptions]. - LocalObjectDetectorOptions( - {required super.mode, - required this.modelPath, - required super.classifyObjects, - required super.multipleObjects, - this.maximumLabelsPerObject = 10, - this.confidenceThreshold = 0.5}); + LocalObjectDetectorOptions({ + required super.mode, + required this.modelPath, + required super.classifyObjects, + required super.multipleObjects, + this.maximumLabelsPerObject = 10, + this.confidenceThreshold = 0.5, + }); /// Returns a json representation of an instance of [LocalObjectDetectorOptions]. @override Map toJson() => { - 'mode': mode.index, - 'type': type.name, - 'classify': classifyObjects, - 'multiple': multipleObjects, - 'path': modelPath, - 'threshold': confidenceThreshold, - 'maxLabels': maximumLabelsPerObject, - }; + 'mode': mode.index, + 'type': type.name, + 'classify': classifyObjects, + 'multiple': multipleObjects, + 'path': modelPath, + 'threshold': confidenceThreshold, + 'maxLabels': maximumLabelsPerObject, + }; } /// Options to configure the detector while using a Firebase model. @@ -146,25 +144,26 @@ class FirebaseObjectDetectorOptions extends ObjectDetectorOptions { final String modelName; /// Constructor to create an instance of [FirebaseObjectDetectorOptions]. - FirebaseObjectDetectorOptions( - {required super.mode, - required this.modelName, - required super.classifyObjects, - required super.multipleObjects, - this.maximumLabelsPerObject = 10, - this.confidenceThreshold = 0.5}); + FirebaseObjectDetectorOptions({ + required super.mode, + required this.modelName, + required super.classifyObjects, + required super.multipleObjects, + this.maximumLabelsPerObject = 10, + this.confidenceThreshold = 0.5, + }); /// Returns a json representation of an instance of [FirebaseObjectDetectorOptions]. @override Map toJson() => { - 'mode': mode.index, - 'type': type.name, - 'classify': classifyObjects, - 'multiple': multipleObjects, - 'modelName': modelName, - 'threshold': confidenceThreshold, - 'maxLabels': maximumLabelsPerObject, - }; + 'mode': mode.index, + 'type': type.name, + 'classify': classifyObjects, + 'multiple': multipleObjects, + 'modelName': modelName, + 'threshold': confidenceThreshold, + 'maxLabels': maximumLabelsPerObject, + }; } /// An object detected in an [InputImage] by [ObjectDetector]. @@ -179,10 +178,11 @@ class DetectedObject { final List