// data目录 import 'package:flutter/material.dart'; import 'package:muse_nepu_course/global.dart';

class GlobalData { String passtemp = "";

void saveAccount(BuildContext context) { showDialog( context: context, builder: (context) { return AlertDialog( title: Text("修改你的一卡通密码\n如果没有错误请不要修改"), content: TextField( onChanged: (value) { passtemp = value; }, ), actions: [ TextButton( child: Text("确认"), onPressed: () { Global.password = passtemp; Global.saveaccount(); Navigator.of(context).pop(); }, ) ], ); }); }

Future getQrCode() async { await Global().getqr(); }

String getQrCodeData() { return Global.qrcodegetter(); } }

// ui目录 import 'dart:async'; import 'package:flutter/material.dart'; import 'package:pretty_qr_code/pretty_qr_code.dart'; import 'package:slide_countdown/slide_countdown.dart'; import 'package:muse_nepu_course/data/global_data.dart';

class QRCodeUI extends StatefulWidget { @override _QRCodeUIState createState() => _QRCodeUIState(); }

class _QRCodeUIState extends State { final streamDuration = StreamDuration(Duration(seconds: 50)); final GlobalData _globalData = GlobalData();

@override void initState() { super.initState(); _globalData.getQrCode(); }

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( backgroundColor: Global.home_currentcolor, actions: [ IconButton( icon: Icon(Icons.settings), onPressed: () { _globalData.saveAccount(context); }, ), ], ), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('点击二维码可手动刷新\n当前是' + Global.qrcode), Align( alignment: Alignment.topCenter, child: SlideCountdown( decoration: BoxDecoration( color: Global.home_currentcolor, borderRadius: BorderRadius.circular(10)), durationTitle: DurationTitle( days: "天", hours: "时", minutes: "分", seconds: "秒"), streamDuration: streamDuration, onChanged: (Duration remaining) { print("剩余" + remaining.inSeconds.toString()); if (remaining.inSeconds <= 1) { streamDuration.change(Duration(seconds: 51)); _globalData.getQrCode().then((value) { setState(() {}); }); } }, ), ), Expanded( child: GestureDetector( onTap: () { print('被点击了'); _globalData.getQrCode().then((value) { streamDuration.change(Duration(seconds: 51)); setState(() {}); }); }, child: PrettyQr( typeNumber: 3, size: 200, data: _globalData.getQrCodeData(), errorCorrectLevel: QrErrorCorrectLevel.M, roundEdges: true, ), ), ), ], ), ), ); } }

// service目录 import 'package:dio/dio.dart'; import 'package:muse_nepu_course/global.dart';

class GlobalService { final Dio dio = Dio();

Future getQR() async { try { Response response = await dio.get(Global.getqrcodeurl(Global.password)); Global.qrcode = response.data.toString(); Global.saveqrcode(); } catch (e) { print(e); } } }

// model目录 import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart';

class Global { static final Global _singleton = Global._internal();

factory Global() { return _singleton; }

Global._internal();

static String password = ""; static String qrcode = ""; static Color home_currentcolor = Colors.blue;

static String getqrcodeurl(String password) { return "http://card.nepu.edu.cn:8070/cassyno/index.php/Home/Index/getQRcode?cardno=20181110129&password=" + password; }

static Future saveaccount() async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('password', password); }

static Future readaccount() async { SharedPreferences prefs = await SharedPreferences.getInstance(); password = prefs.getString('password') ?? ""; }

static Future saveqrcode() async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('qrcode', qrcode); }

static Future readqrcode() async { SharedPreferences prefs = await SharedPreferences.getInstance(); qrcode = prefs.getString('qrcode') ?? ""; }

Future getqr() async { await readaccount(); await readqrcode(); if (password != "") { await GlobalService().getQR(); } }

static String qrcodegetter() { return qrcode; }

帮我把下面的代码按照data目录ui目录service目录model目录将代码分开import dartasync;import packagediodiodart;import packagefluttermaterialdart;import packagemuse_nepu_courseglobaldart;import packagepretty_qr_codepretty_qr_code

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

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