Flutter二维码生成与扫描插件qr_flutter_sotatek的使用

Flutter二维码生成与扫描插件qr_flutter_sotatek的使用

QR.Flutter 是一个用于通过 Widget 或自定义画笔快速渲染二维码的 Flutter 库。

需要帮助?

请不要在问题中提交类似于 “如何做…” 或 “什么是…” 的类型的问题。这些问题将被立即关闭。如果您有任何问题,请在讨论板或 Stack Overflow 上提问。它们将在那里得到解答。

使用问题会创建大量噪音,并导致实际问题得到更慢的修复。

特性

  • 支持空安全
  • 基于 QR - Dart
  • 自动检测二维码版本/类型或手动输入
  • 支持二维码版本 1 - 40
  • 错误纠正/冗余
  • 可配置输出大小、填充、背景色和前景色
  • 支持图像叠加
  • 导出到图像数据以保存到文件或内存中
  • 不需要互联网连接

安装

版本兼容性: 4.0.0+ 支持空安全并需要一个兼容的 Flutter 版本。 如果您正在使用不兼容的 Flutter 版本,请使用此库的 3.x 版本。

您应该在 pubspec.yaml 文件中添加以下内容:

dependencies:
  qr_flutter_sotatek: ^1.0.0

注意: 如果您正在使用 Flutter master 渠道,如果遇到构建问题,或者想尝试最新的版本,您应该使用 master 分支而不是特定的发布版本。为此,在您的 pubspec.yaml 中使用以下配置:

dependencies:
  qr_flutter:
    git:
      url: git://github.com/lukef/qr.flutter.git

请记住,master 分支可能是不稳定的。

在向您的 pubspec.yaml 添加依赖项后,您可以运行 flutter packages get 或使用 IDE 更新您的包。

入门

首先,在代码中导入该依赖项:

import 'package:qr_flutter/qr_flutter.dart';

接下来,要渲染一个基本的二维码,可以使用以下代码(或类似代码):

QrImage(
  data: "1234567890",
  version: QrVersions.auto,
  size: 200.0,
),

根据您的数据需求,您可能需要调整二维码的输出。可用的选项如下表所示:

属性 类型 描述
version int QrVersions.auto 或 1 到 40 之间的值。详情参见 QR码版本
errorCorrectionLevel int QrErrorCorrectLevel 中定义的值。例如:QrErrorCorrectLevel.L
size double 图像的(正方形)大小。如果不指定,则会根据最短尺寸约束自动调整大小。
padding EdgeInsets 包围二维码数据的填充。
backgroundColor Color 背景颜色(默认为无)。
foregroundColor Color 前景颜色(默认为黑色)。
gapless bool 添加一个额外像素来防止间隙(默认为 true)。
errorStateBuilder QrErrorBuilder 允许在无法呈现二维码时显示错误状态 Widget。例如:版本过低,输入过长等。
constrainErrorBounds bool 如果为真,则错误 Widget 将被限制在二维码将要绘制的正方形内。如果为假,则错误状态 Widget 将按其需要的大小扩展/缩小。
embeddedImage ImageProvider 定义要叠加在二维码中心的图像的 ImageProvider
embeddedImageStyle QrEmbeddedImageStyle 嵌入图像的样式属性。
embeddedImageEmitsError bool 如果为真,则加载嵌入图像失败将触发 errorStateBuilder 或渲染一个空的 Container。如果为假,则渲染二维码并将嵌入图像忽略。
semanticsLabel String semanticsLabel 将由屏幕阅读器用来描述二维码的内容。

示例

/example 目录中有一个简单的、工作的 Flutter 应用程序示例。您可以使用它来试验所有选项。

此外,以下示例为您提供了一个快速概述,说明如何使用该库。

一个基本的二维码可能看起来像这样:

QrImage(
  data: 'This is a simple QR code',
  version: QrVersions.auto,
  size: 320,
  gapless: false,
)

带有应用程序资源中的图像的二维码可能看起来像这样:

QrImage(
  data: 'This QR code has an embedded image as well',
  version: QrVersions.auto,
  size: 320,
  gapless: false,
  embeddedImage: AssetImage('assets/images/my_embedded_image.png'),
  embeddedImageStyle: QrEmbeddedImageStyle(
    size: Size(80, 80),
  ),
)

为了在二维码无法验证时显示错误状态:

QrImage(
  data: 'This QR code will show the error state instead',
  version: 1,
  size: 320,
  gapless: false,
  errorStateBuilder: (cxt, err) {
    return Container(
      child: Center(
        child: Text(
          "Uh oh! Something went wrong...",
          textAlign: TextAlign.center,
        ),
      ),
    );
  },
)

更多关于Flutter二维码生成与扫描插件qr_flutter_sotatek的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter二维码生成与扫描插件qr_flutter_sotatek的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


qr_flutter_sotatek 是一个用于在 Flutter 应用中生成和扫描二维码的插件。它基于 qr_fluttermobile_scanner 等库,提供了简单易用的 API 来生成和扫描二维码。以下是如何使用 qr_flutter_sotatek 插件的详细步骤。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 qr_flutter_sotatek 依赖:

dependencies:
  flutter:
    sdk: flutter
  qr_flutter_sotatek: ^1.0.0  # 请根据实际情况使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 生成二维码

使用 qr_flutter_sotatek 生成二维码非常简单。你可以使用 QrImageView 组件来生成二维码。

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

class QrCodeGenerator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QR Code Generator'),
      ),
      body: Center(
        child: QrImageView(
          data: 'https://flutter.dev',
          version: QrVersions.auto,
          size: 200.0,
        ),
      ),
    );
  }
}
  • data: 要编码为二维码的字符串。
  • version: 二维码的版本,通常使用 QrVersions.auto 来自动选择版本。
  • size: 二维码的大小。

3. 扫描二维码

要扫描二维码,你可以使用 QrScanner 组件。

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

class QrCodeScanner extends StatefulWidget {
  @override
  _QrCodeScannerState createState() => _QrCodeScannerState();
}

class _QrCodeScannerState extends State<QrCodeScanner> {
  String? _scanResult;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QR Code Scanner'),
      ),
      body: Column(
        children: [
          Expanded(
            child: QrScanner(
              onScan: (String result) {
                setState(() {
                  _scanResult = result;
                });
              },
            ),
          ),
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: Text(
              _scanResult ?? 'Scan a QR code',
              style: TextStyle(fontSize: 18.0),
            ),
          ),
        ],
      ),
    );
  }
}
  • onScan: 当扫描到二维码时,会调用这个回调函数,并传入扫描到的字符串结果。

4. 权限处理

在 Android 和 iOS 上,扫描二维码需要相机权限。你需要在 AndroidManifest.xmlInfo.plist 中添加相应的权限声明。

AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />

Info.plist:

<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan QR codes</string>

5. 运行应用

现在你可以运行你的 Flutter 应用,并测试二维码生成和扫描功能。

flutter run
回到顶部