Flutter QR 条形码扫描器
一个全屏扫描仪,使用 Google 的 Mobile Vision API 扫描 QR 码和条形码
用法
import 'package:flutter/material.dart';
import 'package:flutter_qr_bar_scanner/qr_bar_scanner_camera.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter QR/Bar Code Reader',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter QR/Bar Code Reader'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, this.title}) : super(key: key);
final String? title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String? _qrInfo = 'Scan a QR/Bar code';
bool _camState = false;
_qrCallback(String? code) {
setState(() {
_camState = false;
_qrInfo = code;
});
}
_scanCode() {
setState(() {
_camState = true;
});
}
@override
void initState() {
super.initState();
_scanCode();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title!),
),
body: _camState
? Center(
child: SizedBox(
height: 1000,
width: 500,
child: QRBarScannerCamera(
onError: (context, error) => Text(
error.toString(),
style: TextStyle(color: Colors.red),
),
qrCodeCallback: (code) {
_qrCallback(code);
},
),
),
)
: Center(
child: Text(_qrInfo!),
),
);
}
}
QrCodeCallback 可以做任何你想做的事,并且会持续接收 QR/条形码
直到摄像头停止。
QRScannerCamera 还有可选参数。
fit
接受 flutter BoxFit 作为参数。
将其设置为不同的值应该可以以不同的方式使预览图像适合,但只有 BoxFit = cover 经过了广泛的测试。
将其设置为不同的值应该可以以不同的方式使预览图像适合,但只有 BoxFit = cover 经过了广泛的测试。
notStartedBuilder
一个回调,如果已定义,则必须返回一个 widget。
这应该构建你想在摄像头加载时显示的任何内容(这可能需要
从毫秒到秒,具体取决于设备)。
child
显示在 QRScannerCamera 之上的 Widget。如果你给它一个特定的尺寸,它可能会导致
奇怪的问题,所以尽量不要。
key
标准的 flutter 键参数。可用于使用 GlobalKey 获取 QRScannerCameraState。
offscreenBuilder
一个回调,如果已定义,则必须返回一个 widget。
这应该构建你想在摄像头视图“屏幕外”时显示的任何内容。
即应用程序暂停时。可能会或可能不会在应用程序预览中显示。
onError
如果发生错误的回调。
'formats'
支持的格式列表,默认情况下全部支持。如果你使用所有格式,则不应定义其他任何格式。
这些是支持的类型
ALL_FORMATS,
AZTEC,
CODE_128,
CODE_39,
CODE_93,
CODABAR,
DATA_MATRIX,
EAN_13,
EAN_8,
ITF,
PDF417,
QR_CODE,
UPC_A,
UPC_E
GitHub
https://github.com/contactlutforrahman/flutter_qr_bar_scanner