Flutter 扫码应用:二维码展示和自动刷新

该项目使用 Flutter 开发了一个简单的扫码应用,包含以下功能:

  • 展示二维码* 自动刷新二维码* 自定义修改密码

项目结构

该项目包含以下目录:

  • data: 暂无数据文件* ui: * qr_code.dart: 主页面,展示二维码和相关功能* service: * global.dart: 全局变量和方法* model: 暂无模型文件

代码示例

ui/qr_code.dartdartimport 'dart:async';

import 'package:dio/dio.dart';import 'package:flutter/material.dart';import 'package:muse_nepu_course/global.dart';import 'package:pretty_qr_code/pretty_qr_code.dart';import 'package:rive/rive.dart';import 'package:slide_countdown/slide_countdown.dart';

class QRCode extends StatefulWidget { @override _QRCodeState createState() => _QRCodeState();}

class _QRCodeState extends State { final streamDuration = StreamDuration(Duration(seconds: 50));

void initState() { super.initState(); Global().getqr(); }

String passtemp = '';

void refresh() { setState(() {}); }

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( backgroundColor: Global.home_currentcolor, //设置 actions: [ IconButton( icon: Icon(Icons.settings), onPressed: () { //弹窗一个文本框加上一个确认框 showDialog( context: context, builder: (context) { return AlertDialog( title: Text('修改你的一卡通密码 如果没有错误请不要修改'), content: TextField( onChanged: (value) { passtemp = value; }, ), actions: [ TextButton( child: Text('确认'), onPressed: () { Global.password = passtemp; Global.saveaccount(); Navigator.of(context).pop(); }, ) ], ); }); }, ), ], ), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('点击二维码可手动刷新 当前是' + Global.qrcode), Align( alignment: Alignment.topCenter, child: SlideCountdown( decoration: BoxDecoration( color: Global.home_currentcolor, borderRadius: BorderRadius.circular(10)), durationTitle: DurationTitle( days: '天', hours: '时', minutes: '分', seconds: '秒'), // This duration no effect if you customize stream duration streamDuration: streamDuration, onChanged: (Duration remaining) { print('剩余' + remaining.inSeconds.toString()); //这里可以获取到剩余时间 //如果剩余时间等于1,恢复倒计时为50s if (remaining.inSeconds <= 1) { streamDuration.change(Duration(seconds: 51)); Global().getqr().then((value) { setState(() {}); }); } }, ), ), Expanded( child: GestureDetector( onTap: () { print('被点击了'); Global().getqr().then((value) { streamDuration.change(Duration(seconds: 51)); setState(() {}); }); }, child: PrettyQr( typeNumber: 3, size: 200, data: Global.qrcodegetter(), errorCorrectLevel: QrErrorCorrectLevel.M, roundEdges: true, ), ), ), ], ), ), ); }}

service/global.dartdartimport 'dart:async';

import 'package:dio/dio.dart';import 'package:flutter/material.dart';

class Global { static String qrcode = ''; static String password = ''; static Color home_currentcolor = Colors.blue;

static Future getqr() async { // 获取二维码数据 // 这里需要根据具体需求进行修改 // 例如:从网络获取二维码数据 // try { // Dio dio = Dio(); // Response response = await dio.get('http://example.com/qrcode'); // qrcode = response.data['qrcode']; // } catch (e) { // print(e); // } }

static String qrcodegetter() { return qrcode; }

static void saveaccount() { // 保存账户信息 // 这里需要根据具体需求进行修改 // 例如:使用 SharedPreferences 或 Hive 等本地存储方案

Flutter 扫码应用:二维码展示和自动刷新

原文地址: https://www.cveoy.top/t/topic/odcg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录