Flutter 生成二维码

embedded/2024/11/20 5:56:36/

在这篇博客中,我们将学习如何使用 Flutter 创建二维码,并实现一些常见的自定义选项。通过使用 qr_flutter插件,我们可以轻松地生成基本二维码,甚至可以将图片嵌入二维码中。最终的效果将包括两个二维码:一个是普通二维码,另一个是带有嵌入图片的二维码。此外,我们还将实现一个文本输入框,用户可以动态修改二维码内容。

效果图:

1、pubspec.yaml 文件中,添加 qr_flutter 插件:

  flutter:sdk: flutterqr_flutter: ^4.0.1

2、我们将在 QRCodeScreen 页面中实现两个二维码的显示:一个是普通的二维码,另一个是带有图像的二维码。

完整代码实现:

import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';  // 导入 qr_flutter 插件void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: QRCodeScreen(),);}
}class QRCodeScreen extends StatefulWidget {@override_QRCodeScreenState createState() => _QRCodeScreenState();
}class _QRCodeScreenState extends State<QRCodeScreen> {// 用于存储二维码的文本内容TextEditingController _controller = TextEditingController();@overridevoid initState() {super.initState();// 默认二维码内容_controller.text = '输入内容改变二维码';}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('QR Code Example'),),body: Padding(padding: const EdgeInsets.all(16.0),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[// 一行显示两个二维码Row(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[// 普通二维码Column(children: <Widget>[QrImageView(data: _controller.text,  // 使用输入框的内容version: QrVersions.auto,size: 160,  // 设置二维码大小gapless: false,),const SizedBox(height: 10),const Text('普通二维码', style: TextStyle(fontSize: 16)),],),const SizedBox(width: 20),// 带图像的二维码Column(children: <Widget>[QrImageView(data: _controller.text,  // 使用输入框的内容version: QrVersions.auto,size: 160,  // 设置二维码大小gapless: false,embeddedImage: const AssetImage('assets/weChat.png'),  // 嵌入图片embeddedImageStyle: const QrEmbeddedImageStyle(size: Size(20, 20),),),SizedBox(height: 10),Text('带图二维码', style: TextStyle(fontSize: 16)),],),],),const SizedBox(height: 30),// 输入框,用户可以更改二维码内容TextField(controller: _controller,  // 使用文本控制器decoration: const InputDecoration(labelText: 'Enter QR code content',border: OutlineInputBorder(),),onChanged: (value) {setState(() {});  // 更新UI,当输入框内容变化时刷新二维码},),],),),);}
}

http://www.ppmy.cn/embedded/138981.html

相关文章

不一样的CSS(二)

目录 一、内容回顾 二、上节内容结束代码 三、icon图标之八卦图 1.内容展示 2.图形分析 3.代码展示 四、icon图标之爱心 1.效果展示 2.代码展示 3.原理分析 五、icon图标之导航图标 1.原理 2.代码实现 3.运行结果展示​编辑 六、icon图标之头像 1.原理分析&…

STL关联式容器之RB-tree(红黑树)

AVL-tree之外&#xff0c;另一个颇具历史并被广泛运用的平衡二叉搜索树是RB-tree&#xff08;红黑树&#xff09;。所谓RB-tree&#xff0c;不仅是一颗二叉搜索树&#xff0c;而且必须满足一下规则&#xff1a; 1&#xff1a;每个节点不是红色就是黑色 2&#xff1a;根节点为…

c++数字雨实现

‌数字雨‌是一种视觉效果&#xff0c;通常出现在黑客电影中&#xff0c;表现为屏幕上不断下落的数字和字符&#xff0c;营造出一种科技感和动态效果。‌12 数字雨的实现方法 ‌编程实现‌&#xff1a;可以使用C/C编程语言来实现数字雨效果。通过定义一个字符串数组&#xff0…

基于Java Springboot宠物领养救助平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

Elasticsearch集群拒绝请求:索引磁盘使用超限

这是一个典型的Elasticsearch集群因为磁盘空间不足而触发的保护机制&#xff0c;导致索引被设置为只读模式&#xff08;read-only-allow-delete​&#xff09;。 以下是解决这个问题的步骤&#xff1a; 释放磁盘空间&#xff1a;您需要清理服务器上的磁盘空间&#xff0c;删除…

电子工牌独立双通道定向拾音方案(有视频演示)

现在一些行业的客服人员在面对客户都要求使用电子工牌分别记录客服和顾客的声音,我们利用双麦克风阵列双波束拾音的方案设计了一个电子工牌方案.可以有效分别记录客服和顾客的声音. 方案思路: 我们采用了一个双麦阵列波束拾音的模块A-59,此模块可以利用2个麦克风组成阵列进行双…

【设计模式】结合Tomcat源码,分析外观模式/门面模式的特性和应用场景

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码解析 目录 一、经典的组建家庭影院流程 二、传统方式解决影院管理 2.1 实现方案&#xff1a;客户端直接调用各流程 2.2 …

基于YOLOv8深度学习的不良坐姿监测与语音提醒系统(PyQt5界面+数据集+训练代码)

本文设计并实现了一种基于YOLOv8深度学习模型的智能坐姿检测系统&#xff0c;旨在实现对用户坐姿的实时监测和识别&#xff0c;帮助用户及时调整不良坐姿&#xff0c;从而减少因长期坐姿不良带来的健康风险。随着现代社会中久坐行为的增加&#xff0c;越来越多的人出现了因坐姿…