【问题标题】:QR code not scanning flutter using qr_code_scanner.dartQR 码不使用 qr_code_scanner.dart 扫描颤振
【发布时间】:2020-04-18 02:17:56
【问题描述】:

我正在尝试使用库 qr_code_scanner 扫描二维码。我不知道是什么问题,但代码没有扫描,显然没有显示输出。我对 Flutter 比较陌生。

代码是

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import 'package:qr_code_scanner/qr_scanner_overlay_shape.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final GlobalKey qrKey= GlobalKey();
  QRViewController controller;
  String qrText='';
  @override
//  void initState(){
//    super.initState();
//    //FlutterMobileVision.start().then((x) => setState((){}));
//  }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("Barcode Scr"),
        ),
        body: Column(
          children: <Widget>[
//            Padding(
//              padding: const EdgeInsets.symmetric(vertical: 10.0),
//            ),
            Expanded(
              flex: 5,
              child: QRView(key: qrKey,
                  overlay: QrScannerOverlayShape(
                    borderRadius: 10,
                    borderColor: Colors.red,
                    borderLength: 30,
                    borderWidth: 10,
                    cutOutSize: 300,
                  ) ,
                  onQRViewCreated: _onQRViewCreated,),
            ),
//            RaisedButton(
//              splashColor: Colors.pinkAccent,
//              color: Colors.red,
//              child: Text("Scan", style: TextStyle(
//                fontSize: 20.0,
//                color: Colors.white,
//              ),),
//              onPressed: Scan(),
//            ),
//            Padding(
//              padding: const EdgeInsets.symmetric(vertical: 10.0),
//            ),
            Expanded(
              flex: 1,
              child: Center(
                child: Text('Scan result: $qrText'
//                  , softWrap: true, style: TextStyle(
//                  fontSize: 20.0,
//                  color: Colors.black,),
               ),
              ),
            ),
          ],
        ),
      )
    );
  }
//  requestPermission() async{
//    PermissionStatus result= await SimplePermissions.requestPermission(permission);
//  }

//  Scan() async{
//    try{
//      //String reader= await BarcodeScanner.scan();
//      if(!mounted)
//        {
//          return;
//        }
//      setState(() => _reader= reader);
//    }on PlatformException  catch(e){
//      if(e.code == BarcodeScanner.CameraAccessDenied){
//        requestPermission();
//      }
//      else
//        {
//          _reader="unknown error";
//        }
//    }on FormatException catch(e){
//      setState(() {
//        _reader="not scanned";
//      });
//    }
//  }
  @override
  void dispose(){
    controller?.dispose();
    super.dispose();
  }
  void _onQRViewCreated(QRViewController controller) {
    this.controller=controller;
    controller.scannedDataStream.listen((scanData) {
      setState(){
        qrText=scanData;
        print(qrText);
      }
    }
    );
  }
}



我要扫描的二维码是:

应用程序在模拟器上运行时的工作方式如下:

【问题讨论】:

  • 控制台出现任何错误?
  • @SauravKumarSingh 不...一切似乎都运行良好。问题是没有显示输出,所以我认为应用程序没有扫描代码。
  • 你试过在真机上运行吗?
  • @SlahLayouni 不,我只在模拟器上试过
  • @override void reassemble() { super.reassemble(); if (Platform.isAndroid) { controller.pauseCamera(); } else if (Platform.isIOS) { controller.resumeCamera(); } },只需添加并检查。如果不检查这个工作示例。 Flutter QR Code Scanning And Generating Example

标签: flutter dart camera qr-code


【解决方案1】:

您需要调用setState() 来更新QRViewController,并使用Barcode.code 获取二维码的值,

void _onQRViewCreated(QRViewController controller) {
  setState(() {
    this.controller=controller;
  });
  
  controller.scannedDataStream.listen((Barcode scanData) {
    setState((){
      qrText = scanData.code;
      print('$qrText');
    });
  });
}

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 2022-01-23
    • 2019-01-04
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多