Flutter实现扫二维码功能

 更新时间:2022年03月23日 09:23:31   作者:GalenWu  
这篇文章主要为大家详细介绍了Flutter实现扫二维码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Flutter实现扫二维码功能的具体代码,供大家参考,具体内容如下

首先在pubspec.yaml中添加:

dependencies:
  qrscan: ^0.3.2
  event_bus: ^2.0.0

在androd清单文件中加入以下权限:

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

<!--
   路径:E:\chen\android\app\src\main\AndroidManifest.xml
  -->
import 'package:flutter/material.dart';
import 'package:qrscan/qrscan.dart' as scanner;
import 'package:event_bus/event_bus.dart';

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

final eventBus = EventBus();

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: HomePage());
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("QRScan")),
      body: BodyContent(),
    );
  }
}

class BodyContent extends StatelessWidget {
  const BodyContent({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
        child: Column(
      children: [HYButton(), HYText()],
    ));
  }
}

class HYButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      child: Text("扫一扫"),
      onPressed: scan,
    );
  }

  Future scan() async {
    String? cameraScanResult = await scanner.scan(); //通过扫码获取二维码中的数据
    final info = QRInfo("${cameraScanResult}");
    eventBus.fire(info);
    print(cameraScanResult); //在控制台打印
  }
}

class HYText extends StatefulWidget {
  @override
  _HYTextState createState() => _HYTextState();
}

class _HYTextState extends State<HYText> {
  String message = "Hello GalenWu";

  @override
  void initState() {
    super.initState();

    eventBus.on<QRInfo>().listen((data) {
      setState(() {
        message = "${data.qrcode}";
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text(
      message,
      style: TextStyle(fontSize: 30),
    );
  }
}

class QRInfo {
  String? qrcode;
  QRInfo(this.qrcode);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android加载loading对话框的功能及实例代码(不退出沉浸式效果)

    Android加载loading对话框的功能及实例代码(不退出沉浸式效果)

    这篇文章主要介绍了Android加载loading对话框的功能及实例代码,不退出沉浸式效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • Android实现加载对话框

    Android实现加载对话框

    这篇文章主要为大家详细介绍了Android实现加载对话框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • Android虚拟机Dalvik和ART科普

    Android虚拟机Dalvik和ART科普

    这篇文章主要为大家介绍了Android虚拟机Dalvik和ART科普详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android进程间使用Intent进行通信

    Android进程间使用Intent进行通信

    Android进程间通信(IPC,Inter-Process Communication)底层采用的是 Binder 机制,具体到应用层有网友根据安卓四大组件将进程间通信方式分为对应的四种方式 Activity, Broadcast, ContentProvider, Service
    2023-02-02
  • AndroidStudio接入Unity工程并实现相互跳转的示例代码

    AndroidStudio接入Unity工程并实现相互跳转的示例代码

    这篇文章主要介绍了AndroidStudio接入Unity工程并实现相互跳转,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Android 中HttpURLConnection与HttpClient使用的简单实例

    Android 中HttpURLConnection与HttpClient使用的简单实例

    这篇文章介绍了Android 中HttpURLConnection与HttpClient使用的简单实例,有需要的朋友可以参考一下
    2013-10-10
  • Android中的Fragment类使用进阶

    Android中的Fragment类使用进阶

    这篇文章主要介绍了Android中的Fragment类使用进阶,重点讲解了Fragment与Activity的交互以及Fragment间的数据传递,需要的朋友可以参考下
    2016-04-04
  • EditText属性深入解析

    EditText属性深入解析

    以下是对android中EditText的属性进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-07-07
  • 详解Flutter混排瀑布流解决方案

    详解Flutter混排瀑布流解决方案

    这篇文章主要介绍了Flutter混排瀑布流解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 源码详解Android中View.post()用法

    源码详解Android中View.post()用法

    本文通过源码给大家详细分析了在Android中View.post()的用法以及经常遇到的问题和解决办法,一起来学习下。
    2017-12-12

最新评论