qr_scanner_plus

一款更好的二维码和条形码扫描器。

特点

  • ✅ 离线使用(使用 Google MLKit)。
  • ✅ 摄像头视图可以点击设置焦点。
  • ✅ 摄像头视图可以使用缩放手势。
  • ✅ 支持多个二维码/条形码。
  • ✅ 易于使用。
  • [ x ] 自动查找潜在的二维码并自动缩放和对焦。

入门

iOS

支持 iOS > 10.0

  1. 请在 info.plist 中添加以下内容

<key>NSCameraUsageDescription</key>
<string>To take photos and video with your camera</string>
<key>NSMicrophoneUsageDescription</key>
<string>To take video with your camera</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>To access your photos in your Library</string>
  1. 并在 Podfile 中添加

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)


    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
         '$(inherited)',

         ## dart: PermissionGroup.camera
         'PERMISSION_CAMERA=1',

         ## dart: PermissionGroup.microphone
         'PERMISSION_MICROPHONE=1',

         ## dart: PermissionGroup.photos
         'PERMISSION_PHOTOS=1',

         ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
         'PERMISSION_LOCATION=1',

       ]
    end
  end

Android

minSdkVersion 21

AndroidManifest.xml 中添加

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

示例

import 'package:flutter/material.dart';
import 'package:qr_scanner_plus/qr_scanner_plus.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('BarcodeScannerPlus example'),
        ),
        body: Center(
            child: QrScannerPlusView(
          _onResult,
          debug: true,
        )),
      ),
    );
  }

  _onResult(List<Barcode> barcodes) {
    for (final barcode in barcodes) {
      print(barcode.type);
      print(barcode.rawValue);
    }
  }
}

截图

GitHub

查看 Github