flutter 扫码加相册二维码识别

import 'dart:developer';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:toptongpin/app/common/widgets/image/local_image.dart';
import 'package:toptongpin/app/res/colors.dart';
import 'package:toptongpin/app/utils/extensions/size_fit.dart';
import 'package:toptongpin/app/utils/object_util.dart';
import 'package:toptongpin/app/utils/toast_util.dart';
import 'package:scan/scan.dart';

import '../../../utils/permission.dart';

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

  @override
  State<StatefulWidget> createState() => _QRViewExampleState();
}

class _QRViewExampleState extends State<QRViewExample> {
  // Barcode? result;
  // QRViewController? QRcontroller;
  // final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
  late StateSetter stateSetter;
  IconData lightIcon = Icons.flash_on;
  ScanController controller = ScanController();

  // In order to get hot reload to work we need to pause the camera if the platform
  // i
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的二维码扫码页面的设计思路: 1. 首先,我们需要引入一个扫描二维码的库。我这里选择使用 flutter_barcode_scanner 库。 2. 在页面上,我们需要一个相机预览区域来扫描二维码,可以使用 flutter_camera_ml_vision 库来实现。 3. 接着,我们需要在预览区域上方添一个扫描框,可以使用 Stack 和 Positioned 来实现。 4. 在扫描框下面添一个提示文字,告诉用户需要将二维码放入扫描框内。 5. 最后,当扫描到二维码时,我们可以将扫描结果显示在页面上。 下面是一个简单的示例代码,你可以根据自己的需求进行修改: ``` import 'package:flutter/material.dart'; import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart'; import 'package:flutter_camera_ml_vision/flutter_camera_ml_vision.dart'; class QRScanPage extends StatefulWidget { @override _QRScanPageState createState() => _QRScanPageState(); } class _QRScanPageState extends State<QRScanPage> { String _scanResult = ''; Future<void> _scanQRCode() async { String scanResult = await FlutterBarcodeScanner.scanBarcode( '#ff6666', '取消', true, ScanMode.QR, ); setState(() { _scanResult = scanResult; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('扫描二维码'), ), body: Column( children: [ Expanded( child: CameraMlVision<List<Barcode>>( detector: FirebaseVision.instance.barcodeDetector().detectInImage, overlayBuilder: (c) { return Stack( children: [ Positioned.fill( child: Container( decoration: BoxDecoration( gradient: LinearGradient( colors: [ Colors.black.withOpacity(0.5), Colors.transparent, Colors.transparent, Colors.black.withOpacity(0.5), ], stops: [0, 0.25, 0.75, 1], begin: Alignment.topCenter, end: Alignment.bottomCenter, ), ), ), ), Positioned( top: MediaQuery.of(context).size.height * 0.3, left: MediaQuery.of(context).size.width * 0.2, right: MediaQuery.of(context).size.width * 0.2, child: Container( height: MediaQuery.of(context).size.width * 0.6, decoration: BoxDecoration( border: Border.all( color: Colors.white70, width: 2, ), ), ), ), ], ); }, onResult: (results) { for (Barcode barcode in results) { if (barcode.valueType == BarcodeValueType.text) { setState(() { _scanResult = barcode.displayValue; }); } } }, ), ), Padding( padding: const EdgeInsets.all(16.0), child: Text( '将二维码放入扫描框内', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), ), if (_scanResult.isNotEmpty) Padding( padding: const EdgeInsets.all(16.0), child: Text( '扫描结果:$_scanResult', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), ), ], ), floatingActionButton: FloatingActionButton( onPressed: _scanQRCode, child: Icon(Icons.qr_code), ), ); } } ``` 这里我们使用了 Firebase ML Vision 来实现二维码的扫描,如果你想使用其他方式来扫描二维码也可以。由于涉及到相机权限的问题,建议在真机上测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值