温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Flutter如何实现扫二维码功能

发布时间:2022-03-23 11:24:51 来源:亿速云 阅读:982 作者:小新 栏目:开发技术

这篇文章主要为大家展示了“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);
}

Flutter如何实现扫二维码功能

以上是“Flutter如何实现扫二维码功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI