finds.dev← search

// the find

juliansteenbakker/mobile_scanner

★ 1,153 · Dart · BSD-3-Clause · updated Jun 2026

A universal Flutter barcode and QR code scanner using CameraX/ML Kit for Android, AVFoundation/Apple Vision for iOS & macOS, and ZXing for web.

A Flutter plugin wrapping CameraX/ML Kit on Android, AVFoundation/Vision on iOS and macOS, and ZXing on web for barcode and QR scanning. It's the de facto standard for Flutter barcode scanning — the alternatives are either abandoned or thinner wrappers. If you're building a Flutter app that needs to scan anything with a camera, this is where you start.

Uses the right native libraries on each platform (ML Kit on Android, Vision on Apple) rather than a lowest-common-denominator approach, so detection speed and accuracy are actually good. The controller lifecycle API is honest — `autoStart: false` plus manual `WidgetsBindingObserver` is the right pattern and the docs show it properly. The `rawBytes` limitation table for iOS is unusually thorough documentation of a real platform constraint rather than pretending it works. CI setup is solid: code coverage, quality gates, release-please automation, semantic PR enforcement.

Linux and Windows are dead ends — no support, no roadmap mentioned, so if your Flutter app targets desktop beyond macOS you're on your own. The `analyzeImage` and `returnImage` features have no web support, which limits a meaningful use case for web-first deployments. Android adds 3–10 MB for the bundled ML Kit model, which is a real cost for lightweight apps; the unbundled option mitigates it but requires Google Play Services, breaking pure APK distribution. Auto-zoom is Android-only and the feature matrix asymmetry (different capabilities per platform) will catch you off guard when a feature works in your Android test but silently does nothing on iOS.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →