{"id":32307248,"url":"https://github.com/rmtmckenzie/flutter_qr_mobile_vision","last_synced_at":"2026-02-19T21:56:03.502Z","repository":{"id":25427184,"uuid":"103973531","full_name":"rmtmckenzie/flutter_qr_mobile_vision","owner":"rmtmckenzie","description":"QR reader plugin using mobile vision API for Flutter.","archived":false,"fork":false,"pushed_at":"2025-10-08T19:16:16.000Z","size":11820,"stargazers_count":219,"open_issues_count":36,"forks_count":197,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-10-23T07:26:08.570Z","etag":null,"topics":["flutter","plugin","qr"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rmtmckenzie.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-09-18T18:01:48.000Z","updated_at":"2025-10-08T19:16:20.000Z","dependencies_parsed_at":"2024-01-26T12:49:20.567Z","dependency_job_id":"af98d589-0753-44a4-81a0-9d48147a2285","html_url":"https://github.com/rmtmckenzie/flutter_qr_mobile_vision","commit_stats":{"total_commits":120,"total_committers":27,"mean_commits":4.444444444444445,"dds":0.5666666666666667,"last_synced_commit":"807932e319c749da681a3aed384e706385b04216"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/rmtmckenzie/flutter_qr_mobile_vision","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmtmckenzie%2Fflutter_qr_mobile_vision","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmtmckenzie%2Fflutter_qr_mobile_vision/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmtmckenzie%2Fflutter_qr_mobile_vision/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmtmckenzie%2Fflutter_qr_mobile_vision/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmtmckenzie","download_url":"https://codeload.github.com/rmtmckenzie/flutter_qr_mobile_vision/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmtmckenzie%2Fflutter_qr_mobile_vision/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29634493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","plugin","qr"],"created_at":"2025-10-23T07:15:49.144Z","updated_at":"2026-02-19T21:56:03.497Z","avatar_url":"https://github.com/rmtmckenzie.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QR Mobile Vision\n\n[![pub package][version_badge]](https://pub.dartlang.org/packages/qr_mobile_vision)\n\n_Reading QR codes and other barcodes using Firebase's MLKit._\n\nThis plugin uses Android \u0026 iOS native APIs for reading images from the device's camera.\nIt then pipes these images both to the MLKit Vision Barcode API which detects barcodes/qrcodes etc,\nand outputs a preview image to be shown on a flutter texture.\n\nThe plugin includes a widget which performs all needed transformations on the camera\noutput to show within the defined area.\n\n## Android Models\n\nWith this new version of MLKit, there are two separate models you can use to do the barcode scanning. Currently, this\napk chooses to use the build-in model.  This will increase your code size by ~2.2MB but will\nresult in better scanning and won't require a separate package to be downloaded in the background for barcode scanning\nto work properly.\n\nYou could also use the Google Play Services and tell your app to download it on install from the play store. See the\ninstruction on the [ml-kit barcode-scanning documentation page](https://developers.google.com/ml-kit/vision/barcode-scanning/android)\nfor android. You would also have to remove the com.google.mlkit:barcode-scanning dependency; this hasn't been tested\nbut would probably go something like this:\n\n```\nconfigurations.all {\n    exclude group: \"com.google.mlkit\", module:\"barcode-scanning\"\n}\n//  ...\ndependencies {\n  // ...\n  // Use this dependency to use the dynamically downloaded model in Google Play Services\n  implementation 'com.google.android.gms:play-services-mlkit-barcode-scanning:16.1.4'\n}\n```\n\nNote that if you do this, you should tell your app to automatically download the model as in the above linked docs.MLKit\n```\n\u003capplication ...\u003e\n    ...\n    \u003cmeta-data\n        android:name=\"com.google.mlkit.vision.DEPENDENCIES\"\n        android:value=\"barcode\" /\u003e\n    \u003c!-- To use multiple models: android:value=\"barcode,model2,model3\" --\u003e\n\u003c/application\u003e\n```\n\nIf this doesn't work for you please open an issue.\n\n## iOS\n\nFor recent versions of Google's Barcode Scanning library ('GoogleMLKit/BarcodeScanning'),\nan iOS version of 15.5+ is required.\n\nThe podspec has not been updated to reflect this requirement as usage of older versions\nof the dependency library is still possible (and necessary if you use an older\nFirebase version). However, if you are having dependency errors when updating this plugin\nin conjunction with the Firebase libraries, ensuring that your project has a version of \n15.5+ might be required.\n\nThe example project has been updated to reflect this.\n\n## Usage\n\nSee the example for how to use this plugin; it is the best resource available as it shows\nthe plugin in use. However, these are the steps you need to take to\nuse this plugin.\n\nFirst, figure out the area that you want the camera preview to be shown in. This is important\nas the preview __needs__ to have a constrained size or it won't be able to build. This\nis required due to the complex nature of the transforms needed to get the camera preview to\nshow correctly on both iOS and Android, while still working with the screen rotated etc.\n\nIt may be possible to get the camera preview to work without putting it in a SizedBox or Container,\nbut the recommended way is to put it in a SizedBox or Container.\n\nYou then need to include the package and instantiate the camera.\n\n```\nimport 'package:qr_mobile_vision/qr_camera.dart';\n\n...\n\nnew SizedBox(\n  width: 300.0,\n  height: 600.0,\n  child: new QrCamera(\n    qrCodeCallback: (code) {\n      ...\n    },\n  ),\n)\n```\n\nThe QrCodeCallback can do anything you'd like, and wil keep receiving QR codes\nuntil the camera is stopped.\n\nThere are also optional parameters to QrCamera.\n\n### `fit`\n\nTakes as parameter the flutter `BoxFit`.\nSetting this to different values should get the preview image to fit in\ndifferent ways, but only `BoxFit = cover` has been tested extensively.\n\n### `notStartedBuilder`\n\nA callback that must return a widget if defined.\nThis should build whatever you want to show up while the camera is loading (which can take\nfrom milliseconds to seconds depending on the device).\n\n### `child`\n\nWidget that is shown on top of the QrCamera. If you give it a specific size it may cause\nweird issues so try not to.\n\n### `key`\n\nStandard flutter key argument. Can be used to get QrCameraState with a GlobalKey.\n\n### `cameraDirection`\n\nUses a camera of the specified direction. Default is to use `BACK`\n\nThese are the support types:\n\n```\n  FRONT,\n  BACK\n```\n\n### `offscreenBuilder`\n\nA callback that must return a widget if defined.\nThis should build whatever you want to show up when the camera view is 'offscreen'.\ni.e. when the app is paused. May or may not show up in preview of app.\n\n### `onError`\n\nCallback for if there's an error.\n\n### `formats`\n\nA list of supported formats, all by default. If you use all, you shouldn't define any others.\n\nThese are the supported types:\n\n```\n  ALL_FORMATS,\n  AZTEC,\n  CODE_128,\n  CODE_39,\n  CODE_93,\n  CODABAR,\n  DATA_MATRIX,\n  EAN_13,\n  EAN_8,\n  ITF,\n  PDF417,\n  QR_CODE,\n  UPC_A,\n  UPC_E\n```\n\n### `direction`\n\nWhether you want the front or the back camera to be used.\n\n## Toggle flash\n\nWhen the camera is running, you can use the `QrCamera.toggleFlash()` or `QrMobileVision.toggleFlash()` methods\nto turn the flash on or off. A better solution is in the works for this, but I can't make a commitment for when\nI'll have time to finish it.\n\n## Push and Pop\n\nIf you push a new widget on top of a the current page using the navigator, the camera doesn't\nnecessarily know about it.\n\n## Contributions\n\nAnyone wanting to contribute to this project is very welcome to! I'll take a look at PR's as soon\n as I can, and any bug reports are appreciated. I've only a few devices on which to test this\n so feedback about other devices is appreciated as well.\n \nThis has been tested on:\n\n- Nexus 5x\n- Nexus 4\n- Pixel 3a\n- iPhone 7\n\n\n[version_badge]: https://img.shields.io/pub/v/qr_mobile_vision.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmtmckenzie%2Fflutter_qr_mobile_vision","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmtmckenzie%2Fflutter_qr_mobile_vision","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmtmckenzie%2Fflutter_qr_mobile_vision/lists"}