Flutter高仿微信-第21篇-支付-向商家付款(二维码)

news/2024/5/5 2:53:37/文章来源:https://blog.csdn.net/maoning20080808/article/details/128000134

Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。

详情请查看

效果图:

实现代码:

/*** Author : wangning* Email : maoning20080809@163.com* Date : 2022/10/25 23:20* Description : 向商家付款*/class ReceivePayment extends StatefulWidget {@overrideState<StatefulWidget> createState() => _ReceivePaymentState();}class _ReceivePaymentState extends State<ReceivePayment> with TickerProviderStateMixin{PaymentBean? _paymentBean;UserBean? _fromUserBean;String? qrCode;var baseEvent;late Animation<double> _animation;late AnimationController _controller;@overridevoid initState() {super.initState();_initAnimator();_initBaseEvent();String account = SpUtils.getAccount();qrCode = CommonUtils.QR_PAYMENT_CODE + account;}void _initAnimator(){/// 动画控制器,动画持续时间5秒,可重复播放_controller = AnimationController(duration: const Duration(seconds: 1),vsync: this,);/// 缩小至 0.2倍大小,放大至3倍大小 非线性动画_animation = Tween<double>(begin: 1, end: 1.3).animate(CurvedAnimation(parent: _controller,curve: Curves.easeInCirc,),);_controller.addStatusListener((status) {if(status == AnimationStatus.completed){_controller.reverse();}});}void _startAnimator(){_controller.forward();}void _initBaseEvent() async {baseEvent = eventBus.on<BaseEvent>((baseBean) {//显示对方头像信息if(baseEvent != null && baseBean.type == BaseEvent.TYPE_MERCHANT_PAYMENT){Map<String, Object> result = baseBean.result;_paymentBean =  result['payment_bean'] as PaymentBean;_initFromUser(_paymentBean);}});}void _initFromUser(PaymentBean? _paymentBean) async {_fromUserBean = await UserRepository.getInstance().findUserByAccount(_paymentBean?.fromAccount??"");_startAnimator();setState(() {});}@overridevoid dispose() {super.dispose();eventBus.off(baseEvent);_controller.dispose();}@overrideWidget build(BuildContext context) {return Scaffold(body: Container(color: Color(0xFF48d17a),width: double.infinity,height: double.infinity,child: Column(children: [topWidget(),merchantsWidget(),merchantInfo(),qrCodeReceiveWidget(),],),),);}//顶部返回栏Widget topWidget(){double appBarHeight = AppManager.getInstance().getAppBarHeight();double top = AppManager.getInstance().getTop(context);double height = appBarHeight + top;return Container(margin: EdgeInsets.only(left:12, top: top, right: 12),height: height,alignment: AlignmentDirectional.center,child: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween,children: [InkWell(onTap: (){Navigator.pop(context);},child: Icon(Icons.arrow_back_ios,color: Colors.white,size: 26,),),Text("向商家付款", style: TextStyle(fontSize: 22, color: Colors.white, fontWeight: FontWeight.bold),),Text(""),],),);}//向商家付款Widget merchantsWidget(){return Container(margin: EdgeInsets.only(left: 12, top: 10, right: 12),width: double.infinity,height: AppManager.getInstance().getWidth(context) - 50,color: Colors.white,child: Stack(children: [Positioned(left:8, top: 8,child: Row(children: [CommonUtils.getBaseIconPng("wc_receive_payment_icon", width: 30, height: 30),SizedBox(width: 10,),Text("向商家付款", style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Color(0xFF48d17a)),),],),),Center(child: getQrWidget(),),],),);}//商家头像信息Widget merchantInfo(){return Offstage(offstage: _fromUserBean == null?true:false,child: ScaleTransition(scale: _animation,child: Container(margin: EdgeInsets.only(left: 12, top:10, right: 22),child: Row(children: [CommonAvatarView.showBaseImage(_fromUserBean?.avatar??""),SizedBox(width:10),Text(_fromUserBean?.nickName??"", style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),),Expanded(child: Text("")),Text("¥${_paymentBean?.balance}", style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white)),],),),),);}//获取二维码图片Widget getQrWidget(){return QrImage(data: '${qrCode}',version: QrVersions.auto,size: 200,gapless: false,);}//二维码收款Widget qrCodeReceiveWidget(){return InkWell(onTap: (){Navigator.push(context, MaterialPageRoute(builder: (context) => QRCodeReceive()));},child: Container(margin: EdgeInsets.only(left: 12, top: 20, right: 12),child: Row(children: [CommonUtils.getBaseIconPng("wc_receive_payment_item_icon", width: 30, height: 30),SizedBox(width: 10,),Text("二维码收款", style: TextStyle(fontSize: 20, color: Colors.white),),Expanded(child: Text("")),Icon(Icons.chevron_right,color: Colors.white,size: 40,)],),),);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_224899.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hack The Box】Linux练习-- Knife

HTB 学习笔记 【Hack The Box】Linux练习-- Knife &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f36…

【计算机网络】Servlet API重点知识汇总

目录 1.HttpServlet&#xff1a; 2.HttpServletRequest&#xff1a; 3.HttpServletRequest代码实例&#xff1a; 3.1.打印请求的内容&#xff1a; 3.2.获取请求中的重要参数 &#xff08;query string中的值&#xff09;&#xff1a; 3.3.获取请求中的重要参数 &#x…

用HTML+CSS仿网易云音乐网站(6个页面)_实训素材

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 音乐网页设计 | 仿网易云音乐 | 各大音乐官网网页 | 明星音乐演唱会主题 | 爵士乐音乐 | 民族音乐 | 等网站的设计与制作 | HTML期末大学生网页设计作…

【安装教程】vscode安装教程(超详细)

Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全、代码重构功能&#xff0c;并且内置了命令行工具和 Git版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置&#xff0c;也可以…

SpringBoot SpringBoot 开发实用篇 6 监控 6.5 health 端点指标控制

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇6 监控6.5 health 端点指标控制6.5.1 问题引入6.5.2 health 端点指标…

还有人以为高并发=多线程吗?跟着大佬带你了解二者关系与区别,面试难题轻松拿下!

高并发和多线程的关系 “高并发和多线程”总是被一起提起&#xff0c;给人感觉两者好像相等&#xff0c;实则高并发≠多线程 多线程是完成任务的一种方法&#xff0c;高并发是系统运行的一种状态&#xff0c;通过多线程有助于系统承受高并发状态的实现。 高并发是一种系统运…

Android 10.0 11.0 12.0 启动模拟器教程

Android 10.0 11.0 12.0 启动模拟器教程 一、android 12.0 模拟器二、创建模拟器设备三、创建删除路经文件夹avd和配置环境变量四、启动模拟器一、android 12.0 模拟器 Android 10.0 11.0 12.0 启动模拟器都行,我选择android 12.0 模拟器 二、创建模拟器设备 第一步骤:在 …

推荐一个基于Springboot + Vue 开发的前后端分离博客

基于Springboot Vue 开发的前后端分离博客 博客介绍 本博客是参考 [风丶宇] 大佬的博客更新而成&#xff0c;感谢大佬提供的页面&#xff0c;然后定制新增部分功能&#xff0c;是个非常值得新手入门学习的Java规范化编程案例&#xff01; 在线地址 项目链接&#xff1a; h…

JVM 中类加载的链接与初始化

类加载系统&#xff0c;主要有以下部分 加载链接 验证准备解析初始化 它们每部分都做些什么事情呢&#xff1f; 加载 (2条消息) JVM 双亲委派模型_兜兜转转m的博客-CSDN博客 链接 链接-验证 一般验证部分&#xff0c;IDEA已经帮我们规范了。 验证是连接阶段的第一步&…

数据结构和常用排序算法复杂度

1.顺序表 插入操作时间复杂度 最好O(1)&#xff0c;最坏O(n)&#xff0c;平均O(n) 移动结点的平均次数n/2 删除操作时间复杂度 最好O(1)&#xff0c;最坏O(n)&#xff0c;平均O(n) 移动结点的平均次数(n-1)/2 按值查找时间复杂度 最好O(1)&#xff0c;最坏O(n)&#xff0c;平…

JVM垃圾回收——CMS垃圾收集器

目录 一、什么是CMS垃圾收集器 二、CMS垃圾收集的过程 三、CMS收集器的不足 四、CMS收集器的参数配置 一、什么是CMS垃圾收集器 虽然HotSpot虚拟机已经在jdk14中移除了CMS垃圾收集的参数&#xff0c;但是考虑到还有很多开发是基于jdk8开发的&#xff0c;所以还是有必要了解…

数据结构-难点突破(C++实现并查集+路径优化,详解哈夫曼编码树)

文章目录1. 并查集2. 哈夫曼编码树1. 并查集 并查集是一个多棵树的集合&#xff08;森林&#xff09;。 并查集由多个集合构成&#xff0c;每一个集合就是一颗树。 并&#xff1a;合并多个集合。查&#xff1a;判断两个值是否再一个集合中。 每棵树存在数组中&#xff0c;使…

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

又到了四年一度的球迷狂欢节&#xff0c;本次卡塔尔世界杯已于11月21号举行。 每当世界杯来临&#xff0c;与世界杯相关产业都会迎来一波爆发&#xff0c;毕竟这个千亿美金市值的市场暗藏着无数的机会。而自GameFi的火热开始&#xff0c;世界杯也成为了加密投资者的狂欢日&…

pytorch的buffer学习整理

pytorch模型中的buffer 这段时间忙于做项目&#xff0c;但是在项目中一直在模型构建中遇到buffer数据&#xff0c;所以花点时间整理下模型中的parameter和buffer数据的区别&#x1f495; 1.torch.nn.Module.named_buffers(prefix‘‘, recurseTrue) 贴上pytorch官网对其的说…

分布式文件系统HDFS实践及原理详解part3

HDFS原理 说明&#xff1a;3.5开头目录是因为和上篇文章内容同属一章&#xff0c;所以开头使用了3.5 3.5 HDFS核心设计 3.5.1 心跳机制 1、 Hadoop 是 Master/Slave 结构&#xff0c;Master 中有 NameNode 和 ResourceManager&#xff0c;Slave 中有 Datanode 和 NodeManag…

异构网络小入

A Survey of Heterogeneous Information Network Analysis Heterogeneous Graph Attention Network 异构网络很火吗&#xff1f; 在一个网络中&#xff0c;不用节点的类型不同&#xff0c;这是肯定的。 所以&#xff0c;异构网络在表征比较复杂的情形时&#xff0c;是比较合适…

基于图像识别的小车智能寻迹控制系统

目录 摘要…… I Abstract II 基于图像识别的智能寻迹控制系统设计 I Design of Intelligent tracking Control system based on Image recognition II 目录 III 第1章 绪论 1 1.1 课题背景 1 1.1 国内外文献综述 1 1.2 论文研究内容 2 第2章 基于图像识别的智能寻迹控制系统方…

【安装Ubuntu18.04遇到的问题】未找到WIFI适配器

大家好&#xff0c;我是小政。好久没有更新文章&#xff0c;近期开始陆续分享一些研究生阶段正在学习的知识和遇到的一些问题。 联想拯救者Y9000P关于安装Ubuntu未找到WIFI适配器的解决方法1.Ubuntu18.042.网卡信息3.解决方法&#xff08;1&#xff09;用手机USB连接电脑提供网…

动态规划--树型dp

6个题1. 树的最长路径2.树的中点.由于第三题需要用到一些数学地知识&#xff0c;所以先去补一补数学知识。连接链接在这里4.二叉苹果树5.战略游戏6.皇宫守卫1. 树的最长路径 定义&#xff1a;树中两个点直接的最远距离称为树的直径 先说一个结论 先任意找到一个树中一个点u&am…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识&#xff0c;高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper&#xff1f; Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…