v2.1.1qr_code_scanner_plus
QR-Code-Scanner, der in Flutter eingebettet werden kann. Verwendet zxing unter Android und AVFoundation unter iOS.
QR-Code-Scanner für Flutter
^1.0.0{"sdk":"flutter"}{"sdk":"flutter"}^6.0.0Englischer Projektschnappschuss. Aktuelle Inhalte auf GitHub.
⚠️ If you are starting a new project, or your project requires new features or long-term stability, use an actively maintained alternative such as mobile_scanner.
This package is a maintenance-only fork of the original qr_code_scanner package.
Its sole purpose is to keep existing projects compiling and running on newer versions of Flutter, the Android Gradle Plugin, and related tooling after the upstream package became unmaintained. It exists to allow existing users to postpone migration, not to provide an actively developed QR scanning solution.
New feature PRs will be rejected.
This includes (but is not limited to):
If you need additional functionality, this package is not the right choice.
The original qr_code_scanner package used MTBBarcodeScanner on iOS, which has been archived and unmaintained since 2021. This fork replaced it with a native AVFoundation implementation to enable Swift Package Manager support and remove the only third-party iOS dependency.
The Android native library (zxing) is outdated and unmaintained. There are known issues and limitations in that native package that will not be fixed here.
As a result:
Projects that require new functionality, reliability, or long-term maintenance of both Flutter and native code should migrate to a fully maintained alternative such as mobile_scanner.
A QR code scanner for iOS, Android, and Web that embeds platform views in Flutter.
This description is retained for historical context only and does not imply ongoing feature development.
| Android | |
|---|---|
|
https://raw.githubusercontent.com/juliuscanute/qr_code_scanner/master/.resources/android-app-screen-one.jpg |
https://raw.githubusercontent.com/juliuscanute/qr_code_scanner/master/.resources/android-app-screen-two.jpg |
| iOS | |
|
https://raw.githubusercontent.com/juliuscanute/qr_code_scanner/master/.resources/ios-app-screen-one.png |
https://raw.githubusercontent.com/juliuscanute/qr_code_scanner/master/.resources/ios-app-screen-two.png |
When a QR code is recognized, the text identified will be set in 'result' of type Barcode, which contains the output text as property 'code' of type String and scanned code type as property 'format' which is an enum BarcodeFormat, defined in the library.
class _QRViewExampleState extends State<QRViewExample> {
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
Barcode? result;
QRViewController? controller;
// In order to get hot reload to work we need to pause the camera if the platform
// is android, or resume the camera if the platform is iOS.
@override
void reassemble() {
super.reassemble();
if (Platform.isAndroid) {
controller!.pauseCamera();
} else if (Platform.isIOS) {
controller!.resumeCamera();
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Expanded(
flex: 5,
child: QRView(
key: qrKey,
onQRViewCreated: _onQRViewCreated,
),
),
Expanded(
flex: 1,
child: Center(
child: (result != null)
? Text(
'Barcode Type: ${describeEnum(result!.format)} Data: ${result!.code}')
: Text('Scan a code'),
),
)
],
),
);
}
void _onQRViewCreated(QRViewController controller) {
this.controller = controller;
controller.scannedDataStream.listen((scanData) {
setState(() {
result = scanData;
});
});
}
}
In order to use this plugin, please make sure to add the Camera permissions in android/app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA" />
In order to use this plugin, add the following to your Info.plist file:
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan QR codes</string>
The iOS plugin supports both the UIScene lifecycle and the legacy application
lifecycle. No plugin-specific SceneDelegate or camera lifecycle changes are
required.
The host app must still adopt UIScene; updating this package alone does not
migrate your app. Follow Flutter's UIScene migration guide
to configure UIApplicationSceneManifest in Info.plist and register plugins in
didInitializeImplicitFlutterEngine using engineBridge.pluginRegistry.
The example AppDelegate and
example Info.plist already use this setup.
Add this to web/index.html:
<script src="https://cdn.jsdelivr.net/npm/jsqr@1.3.1/dist/jsQR.min.js"></script>
Please note: on web, only QR codes are supported. Other barcodes and 2D codes cannot be scanned.
Web support is in very early stage. Features such as flash, pause or resume are not implemented. Moreover, the camera preview does not respect the surrounding constraints. This is not at last due to Flutter's early state of platform views on web.
The default camera is the back camera.
await controller.flipCamera();
By default, flash is OFF.
await controller.toggleFlash();
Pause camera stream and scanner.
await controller.pauseCamera();
Resume camera stream and scanner.
await controller.resumeCamera();