The QR Code Scanner package for Appeto SDK.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 
Julian Steenbakker 49f846d7a7
Updated barcode check to inline check. Updated README.md.
il y a 5 ans
.github Update issue templates il y a 5 ans
.resources Remove unused .gif files il y a 6 ans
android Added raw bytes to result. Moved permission class. il y a 5 ans
example Added raw bytes to result. Moved permission class. il y a 5 ans
ios Added raw bytes to result. Moved permission class. il y a 5 ans
lib Updated barcode check to inline check. Updated README.md. il y a 5 ans
.gitignore .gitgnore all the things il y a 6 ans
CHANGELOG.md Release 0.1.0 il y a 5 ans
LICENSE Initial commit il y a 7 ans
README.md Updated barcode check to inline check. Updated README.md. il y a 5 ans
analysis_options.yaml Updated pedantic. il y a 5 ans
pubspec.yaml Release 0.1.0 il y a 5 ans

README.md

QR Code Scanner

GH Actions

A QR code scanner that works on both iOS and Android by natively embedding the platform view within Flutter. The integration with Flutter is seamless, much better than jumping into a native Activity or a ViewController to perform the scan.

Screenshots

Android

iOS

Get Scanned QR Code

When a QR code is recognized, the text identified will be set in ‘qrText’.

class _QRViewExampleState extends State<QRViewExample> {
  final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
  Barcode result;
  QRViewController controller;

  /// Overriding reassemble and pausing the camera
  /// ensures us that hot reload won't give a black screen
  @override
  void reassemble() {
    super.reassemble();
    controller.pauseCamera();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          Expanded(
            flex: 5,
             // To ensure the Scanner view is properly sizes after rotation
             // we need to listen for Flutter SizeChanged notification and update controller
            child: NotificationListener<SizeChangedLayoutNotification>(
              onNotification: (notification) {
                Future.microtask(() => controller?.updateDimensions(qrKey));
                return false;
              },
              child: SizeChangedLayoutNotifier(
                key: const Key('qr-size-notifier'),
                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(() {
        qrText = scanData;
      });
    });
  }

  @override
  void dispose() {
    controller?.dispose();
    super.dispose();
  }
}

iOS Integration

In order to use this plugin, add the following to your Info.plist file:

<key>io.flutter.embedded_views_preview</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan QR codes</string>

Flip Camera (Back/Front)

The default camera is the back camera.

controller.flipCamera();

Flash (Off/On)

By default, flash is OFF.

controller.toggleFlash();

Resume/Pause

Pause camera stream and scanner.

controller.pauseCamera();

Resume camera stream and scanner.

controller.resumeCamera();

SDK

Requires at least SDK 21 (Android 5.0).

TODOs

  • iOS Native embedding is written to match what is supported in the framework as of the date of publication of this package. It needs to be improved as the framework support improves.
  • In future, options will be provided for default states.
  • Finally, I welcome PR’s to make it better :), thanks

Credits