diff --git a/assets/images/copy.png b/assets/images/copy.png new file mode 100644 index 0000000..7f22735 Binary files /dev/null and b/assets/images/copy.png differ diff --git a/assets/images/download.png b/assets/images/download.png new file mode 100644 index 0000000..bfacef3 Binary files /dev/null and b/assets/images/download.png differ diff --git a/lib/pages/tabs/page4_myMsics_new.dart b/lib/pages/tabs/page4_myMsics_new.dart index 861dbf7..9151013 100644 --- a/lib/pages/tabs/page4_myMsics_new.dart +++ b/lib/pages/tabs/page4_myMsics_new.dart @@ -12,6 +12,7 @@ import 'package:hyzp_ybqx/pages/Login/FaceReg.dart'; import 'package:hyzp_ybqx/pages/MyMsics/05_updated/MyUpdatedNew.dart'; import 'package:hyzp_ybqx/pages/Works/TJXX/tj_data.dart'; import 'package:hyzp_ybqx/pages/tabs/page5_userManager.dart'; +import 'package:hyzp_ybqx/pages/tabs/page6_download.dart'; import 'package:hyzp_ybqx/widget/JdButton.dart'; import 'package:package_info/package_info.dart'; import 'package:path_provider/path_provider.dart'; @@ -53,7 +54,9 @@ class _Page4_MyMsicsNewState extends State //try_setState(); //避免异常报错 try_setState() { try { - setState(() {}); + if (mounted) { + setState(() {}); + } } catch (e) { print('setState(() {})异常:${e}'); } @@ -188,6 +191,11 @@ class _Page4_MyMsicsNewState extends State leadColor: _greenColor, onTapFun: OnTap_MyUpdate, bBadge: bNewVer), + _getListTile('软件下载', + leadPath: 'assets/images/download.png', + leadColor: _deepBlueColor, + onTapFun: OnTap_download, + bBadge: bNewVer), _getListTile('关于', leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout) @@ -471,6 +479,10 @@ class _Page4_MyMsicsNewState extends State Navigator.of(context).push(MaterialPageRoute(builder: (context) => page5_userManager())); } + OnTap_download() { + Navigator.of(context).push(MaterialPageRoute(builder: (context) => page6_download())); + } + OnTap_modify_password() { Navigator.of(context).push(MaterialPageRoute(builder: (context) => ModifyPassword())); } diff --git a/lib/pages/tabs/page6_download.dart b/lib/pages/tabs/page6_download.dart new file mode 100644 index 0000000..f3ca509 --- /dev/null +++ b/lib/pages/tabs/page6_download.dart @@ -0,0 +1,246 @@ +import 'package:badges/badges.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:hyzp_ybqx/pages/Login/FaceReg.dart'; +import 'package:hyzp_ybqx/pages/Login/ModifyPassword.dart'; +import 'package:qr_flutter/qr_flutter.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../components/commonFun.dart'; +import '../../components/dioFun.dart'; +import '../../widget/JdButton.dart'; + +class page6_download extends StatefulWidget { + page6_download({Key key}) : super(key: key); + + _LoginPageState createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + dispose() { + super.dispose(); + } + + String download_url; + + @override + void initState() { + super.initState(); + getNewverUrl().then((value) { + download_url = value['downurl']; + print('_mapVer = ${download_url}'); + if (mounted) { + setState(() {}); + } + }); + } + + //////// + static onNullFun() {} + + Widget _getListTile(title, + {String leadPath = '', + Color leadColor, + onTapFun = onNullFun, + onLongPressFun = onNullFun, + size = 16.0, + bool bBadge = false}) { + return Column( + children: [ + ListTile( + leading: bBadge + ? Badge( + position: BadgePosition.topEnd(top: -7, end: -12), + badgeContent: null, + child: Image.asset( + leadPath, + height: ScreenUtil().setHeight(78), + fit: BoxFit.fitHeight, + ), + ) + : Image.asset( + leadPath, + height: ScreenUtil().setHeight(78), + fit: BoxFit.fitHeight, + ), + title: new Text( + title, + style: TextStyle(fontSize: size, decoration: TextDecoration.underline), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + trailing: Image.asset('assets/images/copy.png', height: 30, fit: BoxFit.fitHeight), + contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0), + enabled: true, + onTap: onTapFun, + onLongPress: onLongPressFun, + ), + // Divider( + // height: 1.0, + // ), + ], + ); + } + + List _listViewUser = []; + + Color _greenColor = Color.fromRGBO(36, 206, 192, 1); //绿色 + Color _deepBlueColor = Color.fromRGBO(79, 118, 230, 1); //深蓝 + Color _deepGreyColor = Color.fromRGBO(116, 139, 161, 1); //深灰 + Color _ligthBlueColor = Color.fromRGBO(80, 159, 245, 1); //亮蓝 + + OnTap_FaceReg() async { + Navigator.of(context).push(MaterialPageRoute(builder: (context) => FaceReg())); + } + + OnTap_modify_password() { + Navigator.of(context).push(MaterialPageRoute(builder: (context) => ModifyPassword())); + } + + OnTap_download_apk() { + _launchUrl(download_url); + } + + _launchUrl(String url) async { + if (await canLaunch(url)) { + await launch(url); + } else { + setState(() { + // _status = 'Unable to launch url $url'; + Fluttertoast.showToast( + msg: 'Unable to launch url $url!', + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.CENTER, + ); + }); + } + } + + //////// + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: PreferredSize( + preferredSize: Size.fromHeight(ScreenUtil().setHeight(173)), // 设置appBar高度 + // 设置appBar高度 + child: AppBar( + automaticallyImplyLeading: false, + centerTitle: true, + titleSpacing: 0.0, + //设置title的左边距 + flexibleSpace: Container( + //SizedBox(height: ScreenUtil().statusBarHeight), //显示顶部状态栏 + // SizedBox(height: ScreenUtil().setHeight(10)), //显示顶部状态栏 + padding: EdgeInsets.only(top: ScreenUtil().statusBarHeight), //留出顶部状态栏高度 + child: Container( + //height: ScreenUtil().setHeight(173), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + colors: [ + Color.fromRGBO(12, 186, 156, 1), + Color.fromRGBO(39, 127, 235, 1), + ], + ), + ), + // decoration: BoxDecoration( + // gradient: LinearGradient(colors: [ + // Color(0xFF0018EB), + // Color(0xFF01C1D9), + // ], begin: Alignment.bottomCenter, end: Alignment.topCenter), + // ), + ), + ), + title: Padding( + padding: EdgeInsets.only(left: 0, right: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + getIconAndTextButton( + iconColor: Colors.white, + iconData: Icons.chevron_left_outlined, + onPress: () { + Navigator.pop(context); + }, + ), + Expanded( + child: Text("apk软件下载", + style: TextStyle(color: Colors.white, fontSize: 20), + textAlign: TextAlign.center, + overflow: TextOverflow.ellipsis), + ), + SizedBox(width: 50), + ], + ), + ), + ), + ), + body: null == download_url || download_url.isEmpty + ? getMoreWidget(color: Colors.black38) + : Container( + padding: EdgeInsets.only(top: 20, bottom: 20, left: 20, right: 20), + child: ListView( + children: [ + Center( + child: Container( + margin: EdgeInsets.only(top: 30), + height: ScreenUtil().setWidth(160), + width: ScreenUtil().setWidth(160), + //child: Image.asset('assets/images/user.png', fit: BoxFit.cover), + child: Image.asset('assets/images/ybsthbj.png', fit: BoxFit.fitHeight), + ), + ), + SizedBox(height: 30), + Text('扫描二维码下载', textAlign: TextAlign.center, style: TextStyle(fontSize: 20)), + + //原文链接:https://blog.csdn.net/houruoyu3/article/details/112314090 + // Text("普通二维码"), + // SizedBox(height: 20,), + // QrImage(data: "这是普通二维码",size: 100,), + // Text("中间有图片的二维码"), + // SizedBox(height: 10), + // QrImage( + // data: "这是中间有图的二维码", + // size: 100, + // embeddedImage: NetworkImage( + // "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2491682377,1019940373&fm=26&gp=0.jpg"), + // ), + Center( + child: QrImage( + //data: download_url, //二维码文本内容 + data: "http://125.64.218.67:9909/downloads/hyzp_ybqx_1.4.13_20220121.apk", + size: 200, + // embeddedImage: AssetImage('assets/images/ybsthbj.png'), + ), + ), + SizedBox(height: 30), + Text('网址下载', textAlign: TextAlign.center, style: TextStyle(fontSize: 20)), + //账户管理项目 + _getListTile(download_url, + size: 20.0, + leadPath: 'assets/images/download.png', + leadColor: _deepBlueColor, + onTapFun: OnTap_download_apk), + // _getListTile('人脸注册', + // leadPath: 'assets/images/人脸注册.png', + // leadColor: _ligthBlueColor, + // onTapFun: OnTap_FaceReg), + SizedBox(height: 60), + JdButton( + height: ScreenUtil().setHeight(382), + //height: 126, + text: "返回", + color: Colors.blueAccent, + onTop: () { + Navigator.pop(context); + }, + ) + ], + ), + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index ee58270..f856dfb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -641,6 +641,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "4.3.3" + qr: + dependency: transitive + description: + name: qr + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.0" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.2.0" rational: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5744dab..cd47d0e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -167,6 +167,9 @@ dependencies: flutter_superplayer: path: .\lib\my_flutter_superplayer + # 二维码生成 https://pub.dev/packages/qr_flutter + qr_flutter: ^3.2.0 + dev_dependencies: flutter_test: sdk: flutter