From e8581eff61ddc8c62a3ae86efdd0a0dfdb7d79a0 Mon Sep 17 00:00:00 2001 From: wylyl22 <2373073266@qq.com> Date: Fri, 5 Aug 2022 17:27:41 +0800 Subject: [PATCH 1/2] www --- asset/fonts/Barlow-BlackItalic.ttf | Bin 0 -> 109224 bytes asset/fonts/Barlow-SemiBold.ttf | Bin 0 -> 103016 bytes asset/fonts/HanaleiFill-Regular.ttf | 1401 +++++++++++++++++++++++++ lib/main.dart | 28 +- lib/ui/home/content_page.dart | 33 +- lib/ui/login/login_page.dart | 230 ++-- lib/ui/user/members_page.dart | 62 +- lib/ui/user/privacy_rights_page.dart | 36 +- lib/ui/user/user_page.dart | 82 +- lib/ui/widget/plone_image_picker.dart | 154 +++ lib/ui/widget/putup_widget.dart | 12 +- lib/utils/pay_util.dart | 166 +++ lib/utils/permissionutils.dart | 16 + pubspec.lock | 333 +++++- pubspec.yaml | 36 +- tool/_build.dart | 62 ++ tool/_project_manage.dart | 64 ++ tool/grind.dart | 70 ++ tool/version_tool.dart | 59 ++ 19 files changed, 2648 insertions(+), 196 deletions(-) create mode 100644 asset/fonts/Barlow-BlackItalic.ttf create mode 100644 asset/fonts/Barlow-SemiBold.ttf create mode 100644 asset/fonts/HanaleiFill-Regular.ttf create mode 100644 lib/ui/widget/plone_image_picker.dart create mode 100644 lib/utils/pay_util.dart create mode 100644 lib/utils/permissionutils.dart create mode 100644 tool/_build.dart create mode 100644 tool/_project_manage.dart create mode 100644 tool/grind.dart create mode 100644 tool/version_tool.dart diff --git a/asset/fonts/Barlow-BlackItalic.ttf b/asset/fonts/Barlow-BlackItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2314595308903849131b977e0db050817ebb8133 GIT binary patch literal 109224 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

j^Y@O|1 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 O4al3Qs)9d*R{s}BGeKbh literal 0 HcmV?d00001 diff --git a/asset/fonts/Barlow-SemiBold.ttf b/asset/fonts/Barlow-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58a643058e65a245dc361b066e56edf170fd9540 GIT binary patch literal 103016 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�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 Ju6h(#{eRP_kYE4+ literal 0 HcmV?d00001 diff --git a/asset/fonts/HanaleiFill-Regular.ttf b/asset/fonts/HanaleiFill-Regular.ttf new file mode 100644 index 0000000..a490d26 --- /dev/null +++ b/asset/fonts/HanaleiFill-Regular.ttf @@ -0,0 +1,1401 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + myweather1/HanaleiFill-Regular.ttf at master · duoshine/myweather1 · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ Skip to content + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ + + + +
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + + + + + +
+ + +
+ + + + + + + + +Permalink + +
+ +
+
+ + + master + + + + +
+
+
+ Switch branches/tags + +
+ + + +
+ +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + + +
+ + +
+
+
+
+ +
+ +
+ + + Go to file + + +
+ + + + + +
+
+
+ + + + + + + + + +
+ +
+
+
 
+
+ +
+
 
+ Cannot retrieve contributors at this time +
+
+ + + + + + + + + +
+ +
+ + +
+ + 89.9 KB +
+ +
+ + + + +
+
+ +
+
+ +
+ +
+
+ + + +
+ +
+ View raw +
+
+ +
+ + + + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + diff --git a/lib/main.dart b/lib/main.dart index 44ab786..331eb2e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'package:bot_toast/bot_toast.dart'; import 'package:call_log/call_log.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -129,24 +130,25 @@ class _MyAppState extends State { child: ScreenUtilInit( designSize: const Size(750, 1334), builder: (context, child) { - return const AnnotatedRegion( - value: SystemUiOverlayStyle( + return AnnotatedRegion( + value: const SystemUiOverlayStyle( statusBarColor: Colors.transparent, //状态栏背景色 statusBarIconBrightness: Brightness.dark), child: GetMaterialApp( // get.testmode=true, debugShowCheckedModeBanner: false, - home: TabNavigator(), - // supportedLocales: [Locale('zh')], - // locale: Locale('zh'), - // builder: ( context,child){ - // ScreenUtil.setContext(context); - // return MediaQuery( - // //设置文字大小不随系统设置改变 - // data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), - // // child: BotToastInit().call(context, child), - // ); - // }, + home: const TabNavigator(), + builder: (context, child) { + // ScreenUtil.setContext(context); + return MediaQuery( + //设置文字大小不随系统设置改变 + data: MediaQueryData.fromWindow( + WidgetsBinding.instance!.window) + .copyWith(textScaleFactor: 1.0), + child: BotToastInit().call(context, child), + ); + }, + navigatorObservers: [BotToastNavigatorObserver()], )); }, )); diff --git a/lib/ui/home/content_page.dart b/lib/ui/home/content_page.dart index bd87dba..40c025e 100644 --- a/lib/ui/home/content_page.dart +++ b/lib/ui/home/content_page.dart @@ -52,14 +52,7 @@ class _ContentPageState extends State { return GestureDetector( onTap: () async { _select = index; - if (index != textList.length - 1) { - await Get.to(() => ContentDetailsPage( - content: content, - ploneBack: (String textContent) { - textList1.add(textContent); - }, - )); - } else { + if (index == textList.length - 1) { await Get.to(() => ContentDetailsPage( content: "", ploneBack: (String textContent) { @@ -67,22 +60,24 @@ class _ContentPageState extends State { textList.setAll(index, {textContent}); }, )); - setState(() {}); - } + } else {} + setState(() {}); // print("这是数据" + textList[_s lect]); // print(index); }, onLongPress: () { setState(() {}); - showDialog( - context: context, - builder: (context) { - return const Centertipsalterwidget( - desText: '你确定要删除这个短信模版吗,删除之后无法还原。', - title: '删除短信模板', - ); - }); + if (index == textList.length - 1) { + showDialog( + context: context, + builder: (context) { + return const Centertipsalterwidget( + desText: '你确定要删除这个短信模版吗,删除之后无法还原。', + title: '删除短信模板', + ); + }); + } }, child: Container( // width: 686.w, @@ -94,7 +89,7 @@ class _ContentPageState extends State { color: pd ? widget.isAnswer! ? Colors.blue - : Color(0xFF72E4C8) + : const Color(0xFF72E4C8) : const Color(0xFFF9F9F9), ), child: Text( diff --git a/lib/ui/login/login_page.dart b/lib/ui/login/login_page.dart index 8a2555e..0d8bc14 100644 --- a/lib/ui/login/login_page.dart +++ b/lib/ui/login/login_page.dart @@ -1,3 +1,6 @@ +import 'dart:async'; + +import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; @@ -21,24 +24,24 @@ class LoginPage extends StatefulWidget { class _LoginPageState extends State { // String _operator=""; // String _phone=""; - // bool _chooseAgreement = false; - // bool _getCodeEnable = true; - // late Timer _timer; - // - // ///时钟 - // String _countDownStr = "发送验证码"; - // - // ///初始化文本 - // int _countDownNum = 59; + bool _chooseAgreement = false; + bool _getCodeEnable = true; + late Timer _timer; + + ///时钟 + String _countDownStr = "发送验证码"; + + ///初始化文本 + int _countDownNum = 59; ///时间倒计数值 - late final TextEditingController _phoneController = - TextEditingController(text: ""); - late final TextEditingController _smsCodeController = - TextEditingController(text: ""); + // late final TextEditingController _phoneController = + // TextEditingController(text: ""); + // late final TextEditingController _smsCodeController = + // TextEditingController(text: ""); - // // late FocusNode _smsCodeFocusNode=FocusNode (canRequestFocus: ); - // bool _cantSelected = false; + // late FocusNode _smsCodeFocusNode=FocusNode (canRequestFocus: ); + bool _cantSelected = false; @override void initState() { super.initState(); @@ -46,7 +49,8 @@ class _LoginPageState extends State { // _phone = '12345678909'; } - String ploneText = ""; + String ploneText = ""; //手机号 + String codeText = ""; //验证码 @override Widget build(BuildContext context) { return CloudScaffold( @@ -90,15 +94,27 @@ class _LoginPageState extends State { style: TextStyle(fontSize: 32.sp, color: const Color(0xFF999999)), ), 80.hb, - _getBox('+86', 36, "请输入手机号", 11), - _getBox('验证码', 32, "请输入验证码", 6), + _getBox('+86', 36, _phoneTFWidget()), + _getBox('验证码', 32, _codeWidget()), 112.hb, PloneBottom( blM: false, border: ploneText.length != 11, opacity: ploneText.length == 11 ? 1 : 0.4, onTap: () { - Get.to(() => const TabNavigator()); + if (ploneText.length < 11) { + BotToast.showText(text: "请输入手机号"); + } else { + if (codeText.length < 6) { + BotToast.showText(text: "请输入验证码"); + } else { + if (_chooseAgreement) { + Get.to(() => const TabNavigator()); + } else { + BotToast.showText(text: "请同意并勾选隐私政策"); + } + } + } }, text: "立即登录", ), @@ -110,7 +126,7 @@ class _LoginPageState extends State { ); } - _getBox(String text, int fontSize, String hit, int num) { + _getBox(String text, int fontSize, Widget plone) { return Container( height: 144.w, width: double.infinity, @@ -138,20 +154,20 @@ class _LoginPageState extends State { margin: EdgeInsets.symmetric(horizontal: 32.w), color: const Color(0xFFE8E8E8), ), - _phoneTFWidget(hit, num), + plone, ]), ); } -// 输入手机号 - _phoneTFWidget(String hit, int num) { +// 输入手机号 + _phoneTFWidget() { return SizedBox( // alignment: Alignment.centerLeft, // padding: EdgeInsets.symmetric(horizontal: 72.w), - width: 300.w, + width: 430.w, height: 50.w, child: TextField( - maxLength: num, + maxLength: 11, inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'[0-9]'))], textCapitalization: TextCapitalization.none, onChanged: (text) { @@ -159,14 +175,40 @@ class _LoginPageState extends State { setState(() {}); }, decoration: InputDecoration( - contentPadding: EdgeInsets.only(bottom: 20.w), - border: InputBorder.none, - counterText: "", - //textfield占位语,类似于iOS中的placeholder - hintText: hit, - //占位语颜色 - hintStyle: TextStyle(color: Colors.black12), - ), + contentPadding: EdgeInsets.only(bottom: 20.w), + border: InputBorder.none, + counterText: "", + //textfield占位语,类似于iOS中的placeholder + hintText: "请输入手机号", + //占位语颜色 + hintStyle: const TextStyle(color: Colors.black12), + suffixIcon: GestureDetector( + onTap: !_getCodeEnable + ? () {} + : () async { + // await apiClient.request(API.login.phoneCode, data: { + // 'phone': UserTool.userProvider.userInfo.phone, + // }); + _beginCountDown(); + if (_cantSelected) return; + _cantSelected = true; + Future.delayed(const Duration(seconds: 1), () { + _cantSelected = false; + }); + }, + child: Container( + width: 180.w, + alignment: Alignment.centerRight, + color: Colors.transparent, + child: Text( + _countDownStr, + style: TextStyle( + color: _getCodeEnable + ? kPrimaryColor + : BaseStyle.colorcccccc), + ), + ), + )), ), ); } @@ -174,70 +216,53 @@ class _LoginPageState extends State { // 输入验证码 _codeWidget() { return SizedBox( - width: 300.w, + // alignment: Alignment.centerLeft, + // padding: EdgeInsets.symmetric(horizontal: 72.w), + width: 430.w, height: 50.w, child: TextField( - onChanged: (String phone) { - setState(() {}); - }, - controller: _smsCodeController, - // focusNode: _smsCodeFocusNode, - keyboardType: TextInputType.number, - style: TextStyle(fontSize: 36.sp, color: BaseStyle.color999999), - inputFormatters: [ - LengthLimitingTextInputFormatter(4), - ], - cursorColor: Colors.black, - decoration: InputDecoration( - // prefixIcon: Container( - // width: 10.w, - // alignment: Alignment.centerLeft, - // child: Text( - // "验证码", - // style: TextStyle( - // fontSize: 32.sp, - // color: const Color(0xFF000000)), - // ), - // ), - prefixText: "验证码", - prefixStyle: const TextStyle( - color: Colors.black, - ), - enabledBorder: const UnderlineInputBorder( - // 不是焦点的时候颜色 - borderSide: BorderSide( - color: BaseStyle.color999999, - ), - ), - hintText: "请输入验证码", - hintStyle: TextStyle(color: BaseStyle.colorcccccc, fontSize: 36.sp), - )), + maxLength: 6, + inputFormatters: [FilteringTextInputFormatter.allow(RegExp(r'[0-9]'))], + textCapitalization: TextCapitalization.none, + onChanged: (text) { + codeText = text; + setState(() {}); + }, + decoration: InputDecoration( + contentPadding: EdgeInsets.only(bottom: 20.w), + border: InputBorder.none, + counterText: "", + //textfield占位语,类似于iOS中的placeholder + hintText: "请输入验证码", + //占位语颜色 + hintStyle: TextStyle(color: Colors.black12), + ), + ), ); } -// // 倒计时 -// _beginCountDown() { -// ///开始倒计时 -// setState(() { -// _getCodeEnable = false; -// _countDownStr = "重新获取($_countDownNum)"; -// }); -// _timer = Timer.periodic(const Duration(seconds: 1), (timer) { -// if (!mounted) { -// return; -// } -// setState(() { -// if (_countDownNum == 0) { -// _countDownNum = 59; -// _countDownStr = "获取验证码"; -// _getCodeEnable = true; -// _timer.cancel(); -// return; -// } -// _countDownStr = "重新获取(${_countDownNum--})"; -// }); -// }); -// } + _beginCountDown() { + ///开始倒计时 + setState(() { + _getCodeEnable = false; + _countDownStr = "${_countDownNum}s"; + }); + _timer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (!mounted) { + return; + } + setState(() { + if (_countDownNum == 0) { + _countDownNum = 59; + _countDownStr = "获取验证码"; + _getCodeEnable = true; + _timer.cancel(); + return; + } + _countDownStr = "${_countDownNum--}s"; + }); + }); + } // 协议 _recognizer(context, int type) { @@ -255,7 +280,7 @@ class _LoginPageState extends State { _getText() { return GestureDetector( onTap: () { - // _chooseAgreement = !_chooseAgreement; + _chooseAgreement = !_chooseAgreement; setState(() {}); }, child: Row( @@ -263,16 +288,15 @@ class _LoginPageState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Container( - width: 50.w, - height: 50.w, - padding: EdgeInsets.only(top: 6.w, right: 5.w), - child: const Icon(CupertinoIcons.circle, - size: 18, color: Color(0xFFdddddd))), - // !_chooseAgreement - // ? const Icon(CupertinoIcons.circle, - // size: 18, color: Color(0xFFdddddd)) - // : const Icon(CupertinoIcons.checkmark_circle, - // size: 18, color: Colors.red)), + width: 50.w, + height: 50.w, + padding: EdgeInsets.only(top: 6.w, right: 5.w), + child: !_chooseAgreement + ? const Icon(CupertinoIcons.circle, + size: 18, color: Color(0xFFdddddd)) + : const Icon(CupertinoIcons.checkmark_circle, + size: 18, color: Colors.blue), + ), RichText( text: TextSpan( text: "我已阅读并同意", diff --git a/lib/ui/user/members_page.dart b/lib/ui/user/members_page.dart index 8cc9182..6edc9c1 100644 --- a/lib/ui/user/members_page.dart +++ b/lib/ui/user/members_page.dart @@ -1,3 +1,4 @@ +import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/ui/widget/check_radio.dart'; @@ -33,6 +34,7 @@ List payWay = [ }, {'payName': '支付宝支付', 'payUrl': Assets.icons.zhifubao.path} ]; +Map a = {}; class _MembersPageState extends State { @override @@ -66,7 +68,9 @@ class _MembersPageState extends State { _getSpay(payWay), PloneBottom( border: true, - onTap: () {}, + onTap: () async { + if (_selectIndex == 0) {} + }, textColor: const Color(0xFF333333), text: "立即开通", color1: const Color(0xFFFFF6D8), @@ -107,7 +111,7 @@ class _MembersPageState extends State { )), Positioned( child: Container( - margin: EdgeInsets.symmetric(horizontal: 64.w, vertical: 16.w), + margin: EdgeInsets.symmetric(horizontal: 64.w, vertical: 50.w), child: _getText())) ]), ); @@ -129,9 +133,9 @@ class _MembersPageState extends State { ), 16.hb, Text( - "解锁全部功能", + "暂未开通会员", style: TextStyle(color: Colors.white, fontSize: BaseStyle.fontSize24), - ) + ), ], ); } @@ -139,13 +143,18 @@ class _MembersPageState extends State { _getVip() { return Row( children: [ - const Text( - "vip", - style: TextStyle(color: Color(0xFFFFEAB0)), + Text( + "VIP", + style: TextStyle( + color: const Color(0xFFFFEAB0), + fontFamily: "BlackItalic", + fontSize: 32.sp), ), Container( width: 8.w, height: 8.w, + alignment: Alignment.center, + margin: EdgeInsets.symmetric(horizontal: 8.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: const Color(0xFFFFEAB0), @@ -153,12 +162,48 @@ class _MembersPageState extends State { ), const Text( "未开通会员", - style: TextStyle(color: Color(0xFFFFEAB0)), + style: TextStyle( + color: Color( + 0xFFFFEAB0, + ), + fontWeight: FontWeight.w700), ) ], ); } + // Future _wxPayFunc() async { + // var base = await apiClient.request(API.user.wallet.assessRecharge, data: { + // 'count': widget.count, + // 'payType': 2, + // }); + // if (base.code == 0) { + // var wxPayModel = WxPayModel.fromJson(base.data['content']); + // await PayUtil().callWxPay( + // payModel: wxPayModel, + // ); + // } else { + // BotToast.showText(text: "${base.msg}"); + // } + // } + + // Future _aliPayFunc() async { + // var base = await apiClient.request(API.user.wallet.assessRecharge, data: { + // 'count': widget.count, + // 'payType': 1, + // }); + // if (base.code == 0) { + // var re = await PayUtil().callAliPay(base.data['content']); + // if (re) { + // _paySuccess(); + // } else { + // BotToast.closeAllLoading(); + // } + // } else { + // CloudToast.show(base.msg); + // } + // } + //充值金额 _getRecharge() { return Container( @@ -223,6 +268,7 @@ class _MembersPageState extends State { child: Text( item[index]['payName'], style: TextStyle( + fontWeight: FontWeight.w700, color: BaseStyle.color333333, fontSize: BaseStyle.fontSize28), ), diff --git a/lib/ui/user/privacy_rights_page.dart b/lib/ui/user/privacy_rights_page.dart index dda5117..74a3a61 100644 --- a/lib/ui/user/privacy_rights_page.dart +++ b/lib/ui/user/privacy_rights_page.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; import 'package:project_telephony/base/base_style.dart'; +import 'package:project_telephony/main.dart'; import 'package:project_telephony/ui/widget/plone_back_button.dart'; import 'package:project_telephony/utils/headers.dart'; +import 'package:telephony/telephony.dart'; class PrivacyRightsPage extends StatefulWidget { final String name; @@ -11,6 +13,14 @@ class PrivacyRightsPage extends StatefulWidget { _PrivacyRightsPageState createState() => _PrivacyRightsPageState(); } +final Telephony telephony = Telephony.instance; +// late final bool permissionsGranted; +// String body = ""; +// @override +// void initState() async { +// initPlatformState(); +// } + class _PrivacyRightsPageState extends State { @override Widget build(BuildContext context) { @@ -32,6 +42,30 @@ class _PrivacyRightsPageState extends State { ); } + // onMessage(SmsMessage message) async { + // setState(() { + // body = message.body ?? "error reading message body."; + // print(body); + // }); + // } + // + // onSendStatus(SendStatus status) { + // setState(() { + // body = status == SendStatus.SENT ? "sent" : "delivered"; + // }); + // } + // + // Future initPlatformState() async { + // final bool? result = await telephony.requestPhoneAndSmsPermissions; + // if (result != null && result) { + // telephony.listenIncomingSms( + // onNewMessage: onMessage, + // onBackgroundMessage: onBackgroundMessage, + // listenInBackground: true); + // } + // if (!mounted) return; + // } + _getRights(bool pd) { return GestureDetector( onTap: () {}, @@ -53,7 +87,7 @@ class _PrivacyRightsPageState extends State { fontWeight: FontWeight.bold), ), 16.hb, - Text('用于获取设备', + Text('用于获取设备1', style: TextStyle( fontSize: 28.sp, color: BaseStyle.color999999)), ], diff --git a/lib/ui/user/user_page.dart b/lib/ui/user/user_page.dart index acadaf4..ae120b0 100644 --- a/lib/ui/user/user_page.dart +++ b/lib/ui/user/user_page.dart @@ -1,3 +1,4 @@ +import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:project_telephony/base/base_style.dart'; @@ -7,7 +8,10 @@ import 'package:project_telephony/ui/user/members_page.dart'; import 'package:project_telephony/ui/user/privacy_rights_page.dart'; import 'package:project_telephony/ui/widget/image_scaffold.dart'; import 'package:project_telephony/ui/widget/plone_bottom.dart'; +import 'package:project_telephony/ui/widget/plone_image_picker.dart'; import 'package:project_telephony/utils/headers.dart'; +import 'package:project_telephony/utils/permissionutils.dart'; +import 'package:telephony/telephony.dart'; class UserPage extends StatefulWidget { const UserPage({Key? key}) : super(key: key); @@ -16,12 +20,14 @@ class UserPage extends StatefulWidget { _UserPageState createState() => _UserPageState(); } +final Telephony telephony = Telephony.instance; + @override void initState() {} class _UserPageState extends State { - bool bl = true; bool vle = false; + bool tooken = true; @override Widget build(BuildContext context) { return CloudScaffold( @@ -58,19 +64,19 @@ class _UserPageState extends State { //头像 _getUser() { - return GestureDetector( - onTap: () { - Get.to(() => const LoginPage()); - }, - child: Container( - margin: EdgeInsets.only(left: 64.w, right: 64.w, top: 216.w), - child: Row( - children: [ - Column( + return Container( + margin: EdgeInsets.only(left: 64.w, right: 64.w, top: 216.w), + child: Row( + children: [ + GestureDetector( + onTap: () { + Get.to(() => const LoginPage()); + }, + child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - bl ? "登录/注册" : "xxxxx", + tooken ? "登录/注册" : "xxxxx", style: TextStyle( fontSize: BaseStyle.fontSize48, color: BaseStyle.color333333, @@ -78,26 +84,33 @@ class _UserPageState extends State { ), 24.hb, Text( - bl ? "登录获取更多信息" : "欢迎您登录短信帮手", + tooken ? "登录获取更多信息" : "欢迎您登录短信帮手", style: TextStyle( fontSize: BaseStyle.fontSize28, color: BaseStyle.color333333), ) ], ), - const Spacer(), - Container( - child: ClipOval( - child: Image.asset( - Assets.images.portrait.path, - height: 128.w, - width: 128.w, - fit: BoxFit.cover, - ), + ), + const Spacer(), + GestureDetector( + onTap: () async { + var value = await CloudImagePicker.pickSingleImage(title: '选择图片'); + if (value != null) { + BotToast.showText(text: '头像成功'); + setState(() {}); + } + }, + child: ClipOval( + child: Image.asset( + Assets.images.portrait.path, + height: 128.w, + width: 128.w, + fit: BoxFit.cover, ), - ) - ], - ), + ), + ) + ], ), ); } @@ -169,13 +182,18 @@ class _UserPageState extends State { _getVip() { return Row( children: [ - const Text( - "vip", - style: TextStyle(color: Color(0xFFFFEAB0)), + Text( + "VIP", + style: TextStyle( + color: const Color(0xFFFFEAB0), + fontFamily: "BlackItalic", + fontSize: 32.sp), ), Container( width: 8.w, height: 8.w, + alignment: Alignment.center, + margin: EdgeInsets.symmetric(horizontal: 8.w), decoration: BoxDecoration( borderRadius: BorderRadius.circular(4), color: const Color(0xFFFFEAB0), @@ -183,7 +201,11 @@ class _UserPageState extends State { ), const Text( "未开通会员", - style: TextStyle(color: Color(0xFFFFEAB0)), + style: TextStyle( + color: Color( + 0xFFFFEAB0, + ), + fontWeight: FontWeight.w700), ) ], ); @@ -192,9 +214,9 @@ class _UserPageState extends State { //内容 _getSwitch(String url, String name, bool pd) { return GestureDetector( - onTap: () { + onTap: () async { pd - ? "" + ? PermissionUtils.requestAllPermission() : Get.to(() => PrivacyRightsPage( name: name, )); diff --git a/lib/ui/widget/plone_image_picker.dart b/lib/ui/widget/plone_image_picker.dart new file mode 100644 index 0000000..ad108c8 --- /dev/null +++ b/lib/ui/widget/plone_image_picker.dart @@ -0,0 +1,154 @@ +import 'dart:io'; + +import 'package:flutter/cupertino.dart'; +import 'package:image_picker/image_picker.dart'; + +// import 'package:image_picker/image_picker.dart'; +import 'package:project_telephony/utils/headers.dart'; +import 'package:velocity_x/velocity_x.dart'; +// import 'package:velocity_x/velocity_x.dart'; + +class CloudImagePicker { + static Future> pickMultiImage( + {required String title, + double maxWidth = 1000, + double maxHeight = 1000}) async { + List? files = []; + files = await ImagePicker().pickMultiImage(); + if (files == null) { + return []; + } else { + return files.map((e) => File(e.path)).toList(); + } + } + + static Future> pickMultiAndSingleImage( + {required String title, + double maxWidth = 1000, + double maxHeight = 1000}) async { + List? files = []; + // _files = await ImagePicker().pickMultiImage(); + + files = await Get.bottomSheet(CupertinoActionSheet( + title: title.text.isIntrinsic.make(), + actions: [ + CupertinoDialogAction( + onPressed: () async { + await ImagePicker().pickMultiImage().then((value) { + if (value != null) { + Get.back( + result: value, + ); + } + }); + }, + child: Row( + children: [ + const Icon(CupertinoIcons.photo), + 30.wb, + '相册(长按图片多选)'.text.isIntrinsic.make(), + ], + ), + ), + CupertinoDialogAction( + onPressed: () async { + await ImagePicker() + .pickImage( + source: ImageSource.camera, + maxHeight: maxHeight, + maxWidth: maxWidth, + ) + .then((value) { + if (value != null) { + XFile pickFile = value; + List files = []; + files.add(pickFile); + Get.back( + result: files, + ); + } + }); + }, + child: Row( + children: [ + const Icon(CupertinoIcons.camera), + 30.wb, + '相机'.text.isIntrinsic.make(), + ], + ), + ), + ], + cancelButton: CupertinoDialogAction( + onPressed: Get.back, + child: '取消'.text.isIntrinsic.make(), + ), + )); + if (files == null) { + return []; + } else { + return files.map((e) => File(e.path)).toList(); + } + } + + static Future pickSingleImage( + {required String title, + double maxWidth = 1000, + double maxHeight = 1000}) async { + XFile? xFile = await Get.bottomSheet(CupertinoActionSheet( + title: title.text.isIntrinsic.make(), + actions: [ + CupertinoDialogAction( + onPressed: () async { + await ImagePicker() + .pickImage( + source: ImageSource.gallery, + maxHeight: maxHeight, + maxWidth: maxWidth, + ) + .then((value) { + Get.back( + result: value, + ); + }); + }, + child: Row( + children: [ + const Icon(CupertinoIcons.photo), + 30.wb, + '相册'.text.isIntrinsic.make(), + ], + )), + CupertinoDialogAction( + onPressed: () async { + await ImagePicker() + .pickImage( + source: ImageSource.camera, + maxHeight: maxHeight, + maxWidth: maxWidth, + ) + .then((value) { + Get.back( + result: value, + ); + }); + }, + child: Row( + children: [ + const Icon(CupertinoIcons.camera), + 30.wb, + '相机'.text.isIntrinsic.make(), + ], + )), + ], + cancelButton: CupertinoDialogAction( + onPressed: Get.back, + child: '取消'.text.isIntrinsic.make(), + ), + )); + if (xFile != null) { + return File(xFile.path); + } else { + return null; + } + } +} diff --git a/lib/ui/widget/putup_widget.dart b/lib/ui/widget/putup_widget.dart index de77cde..b11b38f 100644 --- a/lib/ui/widget/putup_widget.dart +++ b/lib/ui/widget/putup_widget.dart @@ -80,10 +80,11 @@ class SortWidget extends StatelessWidget { : Border.all(color: const Color(0xFFFFDF66), width: 1.w)), child: Column( children: [ - Padding(padding: EdgeInsets.only(top: 16.w)), + Padding(padding: EdgeInsets.only(top: 32.w)), Text( "${item.month}个月VIP", style: TextStyle( + fontFamily: "SemiBold", fontSize: BaseStyle.fontSize28, color: BaseStyle.color333333, fontWeight: FontWeight.bold), @@ -99,18 +100,17 @@ class SortWidget extends StatelessWidget { TextSpan( text: "${item.pice}", style: TextStyle( + fontFamily: "SemiBold", fontSize: 64.sp, color: pickItem == item ? const Color(0xFFFF3F3F) : BaseStyle.color333333)) ])), - Text( - "${(item.pice / item.month).toStringAsFixed(2)}元/月", - style: TextStyle( + Text("${(item.pice / item.month).toStringAsFixed(2)}元/月", + style: TextStyle( fontSize: BaseStyle.fontSize24, color: BaseStyle.color999999, - fontWeight: FontWeight.bold), - ), + )), ], )), ); diff --git a/lib/utils/pay_util.dart b/lib/utils/pay_util.dart new file mode 100644 index 0000000..fde58bd --- /dev/null +++ b/lib/utils/pay_util.dart @@ -0,0 +1,166 @@ +// import 'dart:async'; +// import 'dart:convert'; + +// import 'package:bot_toast/bot_toast.dart'; +// import 'package:cloud_car/model/pay/wx_pay_model.dart'; +// import 'package:cloud_car/utils/new_work/api_client.dart'; +// import 'package:cloud_car/utils/toast/cloud_toast.dart'; +// import 'package:dio/dio.dart'; +// import 'package:flutter/foundation.dart'; +// import 'package:fluwx/fluwx.dart'; +// import 'package:power_logger/power_logger.dart'; +// import 'package:tobias/tobias.dart'; + +// import '../model/pay/pay_model.dart'; + +// enum PAYTYPE { +// ///支付宝 +// ali, + +// ///微信 +// wx, + +// ///现金 +// cash, + +// ///pos +// pos +// } + +// class PayUtil { +// static final PayUtil _instance = PayUtil._(); + +// factory PayUtil() => _instance; + +// PayUtil._(); + +// void resultSatus(String status) { +// switch (status) { +// case '8000': +// BotToast.showText(text: '正在处理中'); +// break; +// case '4000': +// BotToast.showText(text: '订单支付失败'); +// break; +// case '5000': +// BotToast.showText(text: '重复请求'); +// break; +// case '6001': +// BotToast.showText(text: ' 用户中途取消'); +// break; +// case '6002': +// BotToast.showText(text: '网络连接出错'); +// break; +// case '6004': +// BotToast.showText(text: '支付结果未知,请查询商户订单列表中订单的支付状态'); +// break; +// default: +// BotToast.showText(text: '其他支付错误'); +// break; +// } +// } + +// String _resultStatus = ''; + +// ///支付宝支付 +// ///传入订单信息和确认订单请求地址 +// Future callAliPay(String order, {String? apiPath}) async { +// var install = await isAliPayInstalled(); +// if (!install) { +// BotToast.showText(text: '未安装支付宝!'); +// return false; +// } +// Map result = {}; +// try { +// result = await aliPay(order); +// } catch (e) { +// if (kDebugMode) { +// print(e.toString()); +// } +// } +// _resultStatus = result['resultStatus']; +// if (_resultStatus == '9000') { +// String res = result['result']; +// PayModel model = PayModel.fromJson(jsonDecode(res)); +// if (apiPath != null) { +// bool confirmResult = await _confirmPayResult( +// apiPath, model.aliPayTradeAppPayResponse.outTradeNo); +// return confirmResult; +// } else { +// CloudToast.show('支付成功'); +// return true; +// } +// } else { +// resultSatus(_resultStatus); +// return false; +// } +// } + +// Future _confirmPayResult(String path, String code) async { +// try { +// int status = 0; +// for (var i = 0; i < 3; i++) { +// await Future.delayed(const Duration(milliseconds: 1000), () async { +// Response response = await apiClient.dio.get(path, queryParameters: { +// "code": code, +// }); +// status = response.data['status'] as int; +// }); +// if (status == 2) { +// break; +// } +// } +// if (status == 2) { +// BotToast.showText(text: '交易成功'); +// return true; +// } else { +// BotToast.showText(text: '交易失败 错误码$status'); +// return false; +// } +// } catch (e) { +// BotToast.showText(text: '网络请求错误'); +// LoggerData.addData(e); +// return false; +// } +// } + +// ///微信支付 + +// StreamSubscription? _wxPayStream; + +// void wxPayAddListener( +// {required VoidCallback paySuccess, +// Function(BaseWeChatResponse)? payError}) { +// _wxPayStream = weChatResponseEventHandler.listen((event) { +// if (kDebugMode) { +// print('errorCode:${event.errCode} errorStr:${event.errStr}'); +// } +// if (event.errCode == 0) { +// paySuccess(); +// } else { +// LoggerData.addData( +// 'errorCode:${event.errCode} errorStr:${event.errStr ?? '支付失败'}'); +// CloudToast.show(event.errStr ?? '支付失败'); +// if (payError != null) payError(event); +// //payError == null ? null : payError(event); +// } +// }); +// } + +// void removeWxPayListener() { +// _wxPayStream?.cancel(); +// } + +// Future callWxPay({ +// required WxPayModel payModel, +// }) async { +// await payWithWeChat( +// appId: 'wx9bc3ffb23a749254', +// partnerId: payModel.partnerId, +// prepayId: payModel.prepayId, +// packageValue: payModel.package, +// nonceStr: payModel.nonceStr, +// timeStamp: int.parse(payModel.timeStamp), +// sign: payModel.sign); +// } +// } diff --git a/lib/utils/permissionutils.dart b/lib/utils/permissionutils.dart new file mode 100644 index 0000000..a4b1174 --- /dev/null +++ b/lib/utils/permissionutils.dart @@ -0,0 +1,16 @@ + + +import 'package:bot_toast/bot_toast.dart'; +import 'package:permission_handler/permission_handler.dart'; + +class PermissionUtils { + static Future requestAllPermission() async { + Map permission = + await [Permission.phone, Permission.sms].request(); + if (await Permission.phone.isGranted) { + BotToast.showText(text: "手机申请通过"); + } else { + BotToast.showText(text: "手机申请不通过"); + } + } +} diff --git a/pubspec.lock b/pubspec.lock index 8b820aa..e9d5aa0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -15,6 +15,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.1.0" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.1" args: dependency: transitive description: @@ -29,6 +36,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.8.2" + auto_size_text_pk: + dependency: transitive + description: + name: auto_size_text_pk + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" boolean_selector: dependency: transitive description: @@ -127,6 +141,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" clock: dependency: transitive description: @@ -147,7 +168,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0" + version: "1.16.0" color: dependency: transitive description: @@ -155,6 +176,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.0" + common_utils: + dependency: transitive + description: + name: common_utils + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" convert: dependency: transitive description: @@ -162,6 +190,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.2" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+1" crypto: dependency: transitive description: @@ -190,20 +225,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + decimal: + dependency: transitive + description: + name: decimal + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" device_info_plus: dependency: "direct main" description: name: device_info_plus url: "https://pub.dartlang.org" source: hosted - version: "0.0.1" + version: "4.0.0" + device_info_plus_linux: + dependency: transitive + description: + name: device_info_plus_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + device_info_plus_macos: + dependency: transitive + description: + name: device_info_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0+1" + device_info_plus_web: + dependency: transitive + description: + name: device_info_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + device_info_plus_windows: + dependency: transitive + description: + name: device_info_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" fake_async: dependency: transitive description: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" ffi: dependency: transitive description: @@ -225,6 +302,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + flustars: + dependency: "direct main" + description: + name: flustars + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" flutter: dependency: "direct main" description: flutter @@ -279,6 +363,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.4" + flutter_native_splash: + dependency: "direct dev" + description: + name: flutter_native_splash + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.3" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_screenutil: dependency: "direct main" description: @@ -291,6 +389,18 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + fluwx: + dependency: "direct main" + description: + name: fluwx + url: "https://pub.dartlang.org" + source: hosted + version: "3.9.1" frontend_server_client: dependency: transitive description: @@ -319,6 +429,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + grinder: + dependency: "direct dev" + description: + name: grinder + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.2" hive: dependency: "direct main" description: @@ -333,6 +450,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" http_multi_server: dependency: transitive description: @@ -347,6 +471,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.1" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.3" + image_picker: + dependency: "direct main" + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+1" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.8" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+6" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.1" + intl: + dependency: transitive + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" io: dependency: transitive description: @@ -362,7 +535,7 @@ packages: source: hosted version: "0.6.4" json_annotation: - dependency: transitive + dependency: "direct main" description: name: json_annotation url: "https://pub.dartlang.org" @@ -409,7 +582,7 @@ packages: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "0.1.4" meta: dependency: transitive description: @@ -451,7 +624,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" path_provider: dependency: transitive description: @@ -501,6 +674,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.7" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + url: "https://pub.dartlang.org" + source: hosted + version: "10.0.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + url: "https://pub.dartlang.org" + source: hosted + version: "10.0.0" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + url: "https://pub.dartlang.org" + source: hosted + version: "9.0.4" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" petitparser: dependency: transitive description: @@ -557,6 +765,69 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + rational: + dependency: transitive + description: + name: rational + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + shared_preferences: + dependency: transitive + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.12" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" shelf: dependency: transitive description: @@ -596,7 +867,14 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" + sp_util: + dependency: transitive + description: + name: sp_util + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" stack_trace: dependency: transitive description: @@ -625,6 +903,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0+2" telephony: dependency: "direct main" description: @@ -645,7 +930,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.9" time: dependency: transitive description: @@ -660,6 +945,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + tobias: + dependency: "direct main" + description: + name: tobias + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.1" typed_data: dependency: transitive description: @@ -667,13 +959,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + universal_io: + dependency: transitive + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.2" + velocity_x: + dependency: "direct main" + description: + name: velocity_x + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.1" + vxstate: + dependency: transitive + description: + name: vxstate + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" watcher: dependency: transitive description: @@ -717,5 +1030,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=2.16.1 <3.0.0" + dart: ">=2.17.0-0 <3.0.0" flutter: ">=2.8.1" diff --git a/pubspec.yaml b/pubspec.yaml index 2fb8b06..ea8c62f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: # 获取来电状态 telephony: any provider: ^6.0.3 + permission_handler: ^10.0.0 # 获取通话记录 call_log: ^4.0.0 # 后台设置 @@ -55,6 +56,18 @@ dependencies: bot_toast: ^4.0.3 # 汉转音 lpinyin: ^2.0.3 +#各种扩展 + velocity_x: ^3.0.0 +# 相机 + image_picker: ^0.8.5 +#微信登录及支付 + fluwx: ^3.8.3 + #支付宝支付 + tobias: ^2.4.0+2 +# 工具 + flustars: ^2.0.1 +# model生成 + json_annotation: ^4.6.0 # # jdk # jverify: ^2.2.5 ## pub 集成 @@ -76,14 +89,25 @@ dev_dependencies: yaml: ^3.1.0 pub_semver: ^2.1.0 flutter_gen_runner: ^4.1.3 + # patgh: ^1.8.1 + #脚本工具 + grinder: ^0.9.1 + flutter_native_splash: ^1.1.8+4 flutter: - uses-material-design: true - generate: true - assets: - - assets/ - - assets/icons/ - - assets/images/ + uses-material-design: true + generate: true + fonts: + - family: BlackItalic + fonts: + - asset: asset/fonts/Barlow-BlackItalic.ttf + - family: SemiBold + fonts: + - asset: asset/fonts/Barlow-SemiBold.ttf + assets: + - assets/ + - assets/icons/ + - assets/images/ # - assets/data/ diff --git a/tool/_build.dart b/tool/_build.dart new file mode 100644 index 0000000..249976d --- /dev/null +++ b/tool/_build.dart @@ -0,0 +1,62 @@ +part of './grind.dart'; + +@Task('打包Android项目') +buildApk() async { + await runAsync( + 'fvm', + arguments: [ + 'flutter', + 'build', + 'apk', + '--target-platform=android-arm64', + '--dart-define', + 'BUILD_TYPE=PRODUCT', + ], + ); + + String date = DateUtil.formatDate(DateTime.now(), format: 'yy_MM_dd_HH_mm'); + String version = await getVersion(); + await runAsync('rm', arguments: ['-rf', Config.apkDir]); + await runAsync('mkdir', arguments: ['-p', Config.apkDir]); + await runAsync('mv', arguments: [ + Config.buildPath, + '${Config.apkDir}/${Config.packageName}_${version}_release_$date.apk' + ]); +} + +@Task('打包Android项目') +buildApkDev() async { + await runAsync( + 'fvm', + arguments: [ + 'flutter', + 'build', + 'apk', + '--target-platform=android-arm64', + '--dart-define', + 'BUILD_TYPE=Dev', + ], + ); + String date = DateUtil.formatDate(DateTime.now(), format: 'yy_MM_dd_HH_mm'); + String version = await getVersion(); + await runAsync('rm', arguments: ['-rf', Config.apkDevDir]); + await runAsync('mkdir', arguments: ['-p', Config.apkDevDir]); + await runAsync('mv', arguments: [ + Config.buildPath, + '${Config.apkDevDir}/${Config.packageName}_${version}_beta_$date.apk' + ]); +} + +@Task('打包iOS项目') +buildIos() async { + await runAsync( + 'fvm', + arguments: [ + 'flutter', + 'build', + 'ios', + '--dart-define', + 'BUILD_TYPE=PRODUCT', + ], + ); +} diff --git a/tool/_project_manage.dart b/tool/_project_manage.dart new file mode 100644 index 0000000..5f58c3a --- /dev/null +++ b/tool/_project_manage.dart @@ -0,0 +1,64 @@ +part of './grind.dart'; + +@Task('import 排序') +void sort() { + Pub.run('import_sorter:main'); +} + +@Task('格式化dart代码') +void format() { + DartFmt.format(libDir); +} + +@Task('自动提交修改') +@Depends(sort, format, gitPush) +void git() { + log(' commit to git'); + run( + 'git', + arguments: [ + 'commit', + '-a', + '-m', + '[auto task] sort & format', + ], + ); +} + +@Task('推送代码') +void gitPush() { + log(' push to git'); + run( + 'git', + arguments: ['push'], + ); +} + +@Task('build runner') +void gen() async { + await runAsync( + 'fvm', + arguments: [ + 'flutter', + 'pub', + 'run', + 'build_runner', + 'build', + ], + ); +} + +@Task('build runner clean') +void genClean() async { + await runAsync( + 'fvm', + arguments: [ + 'flutter', + 'pub', + 'run', + 'build_runner', + 'build', + '--delete-conflicting-outputs' + ], + ); +} diff --git a/tool/grind.dart b/tool/grind.dart new file mode 100644 index 0000000..112ee83 --- /dev/null +++ b/tool/grind.dart @@ -0,0 +1,70 @@ +import 'dart:io'; + +import 'package:flustars/flustars.dart'; +import 'package:grinder/grinder.dart'; +import 'package:path/path.dart'; +import 'package:pub_semver/pub_semver.dart'; +import 'package:yaml/yaml.dart'; + +import 'config.dart'; +import 'version_tool.dart'; + +part '_build.dart'; +part '_project_manage.dart'; + +main(args) => grind(args); + +@Task('add minor version number') +void addVersion() async { + String projectPath = Directory('.').absolute.path; + String yamlPath = join(projectPath, 'pubspec.yaml'); + String yamlContent = await File(yamlPath).readAsString(); + dynamic content = loadYaml(yamlContent); + String version = content['version']; + //rename version + + Version resultVersion = VersionTool.fromText(version).nextMinorTag('dev'); + + String result = yamlContent.replaceFirst(version, resultVersion.toString()); + await File(yamlPath).writeAsString(result); +} + +@Task('add path version number') +void addVersionPatch() async { + String projectPath = Directory('.').absolute.path; + String yamlPath = join(projectPath, 'pubspec.yaml'); + String yamlContent = await File(yamlPath).readAsString(); + dynamic content = loadYaml(yamlContent); + String version = content['version']; + //rename version + + Version resultVersion = VersionTool.fromText(version).nextPatchTag('dev'); + + String result = yamlContent.replaceFirst(version, resultVersion.toString()); + await File(yamlPath).writeAsString(result); +} + +@Task('add major version number') +void addVersionMajor() async { + String projectPath = Directory('.').absolute.path; + String yamlPath = join(projectPath, 'pubspec.yaml'); + String yamlContent = await File(yamlPath).readAsString(); + dynamic content = loadYaml(yamlContent); + String version = content['version']; + //rename version + + Version resultVersion = VersionTool.fromText(version).nextMajorTag('dev'); + + String result = yamlContent.replaceFirst(version, resultVersion.toString()); + await File(yamlPath).writeAsString(result); +} + +@Task() +Future getVersion() async { + String projectPath = Directory('.').absolute.path; + String yamlPath = join(projectPath, 'pubspec.yaml'); + String yamlContent = await File(yamlPath).readAsString(); + dynamic content = loadYaml(yamlContent); + String version = content['version']; + return version; +} diff --git a/tool/version_tool.dart b/tool/version_tool.dart new file mode 100644 index 0000000..e6d629b --- /dev/null +++ b/tool/version_tool.dart @@ -0,0 +1,59 @@ +import 'package:pub_semver/pub_semver.dart'; + +enum VersionNumber { + major, + minor, + patch, +} + +class VersionTool { + Version version; + VersionTool(this.version); + VersionTool.fromText(String text) : version = Version.parse(text); + + Version get nextMajor => _addBuildNumber(VersionNumber.major); + Version get nextMinor => _addBuildNumber(VersionNumber.minor); + Version get nextPatch => _addBuildNumber(VersionNumber.patch); + + Version nextMajorTag(String tag) => _addBuildNumber( + VersionNumber.major, + tag: tag, + ); + Version nextMinorTag(String tag) => _addBuildNumber( + VersionNumber.minor, + tag: tag, + ); + Version nextPatchTag(String tag) => _addBuildNumber( + VersionNumber.patch, + tag: tag, + ); + + Version _addBuildNumber(VersionNumber type, {String? tag}) { + switch (type) { + case VersionNumber.major: + return Version( + version.major, + version.minor, + version.patch + 1, + pre: tag, + build: '${(version.build.first as int) + 1}', + ); + case VersionNumber.minor: + return Version( + version.major, + version.minor + 1, + 0, + pre: tag, + build: '${(version.build.first as int) + 1}', + ); + case VersionNumber.patch: + return Version( + version.major + 1, + 0, + 0, + pre: tag, + build: '${(version.build.first as int) + 1}', + ); + } + } +} From 1ef867e7e92edf6ccd4c2676dba03f1578805614 Mon Sep 17 00:00:00 2001 From: wylyl22 <2373073266@qq.com> Date: Fri, 5 Aug 2022 18:12:25 +0800 Subject: [PATCH 2/2] www --- lib/ui/user/user_page.dart | 2 +- pubspec.lock | 72 +++++++++++++++++--------------------- pubspec.yaml | 5 ++- 3 files changed, 35 insertions(+), 44 deletions(-) diff --git a/lib/ui/user/user_page.dart b/lib/ui/user/user_page.dart index ae120b0..5c7330f 100644 --- a/lib/ui/user/user_page.dart +++ b/lib/ui/user/user_page.dart @@ -216,7 +216,7 @@ class _UserPageState extends State { return GestureDetector( onTap: () async { pd - ? PermissionUtils.requestAllPermission() + ? "" : Get.to(() => PrivacyRightsPage( name: name, )); diff --git a/pubspec.lock b/pubspec.lock index 98ecfe4..1493881 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -168,7 +168,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.16.0" + version: "1.15.0" color: dependency: transitive description: @@ -280,7 +280,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.2.0" ffi: dependency: transitive description: @@ -320,7 +320,28 @@ packages: name: flutter_background_service url: "https://pub.dartlang.org" source: hosted - version: "0.2.6" + version: "0.2.8+5" + flutter_background_service_android: + dependency: transitive + description: + name: flutter_background_service_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.2" + flutter_background_service_ios: + dependency: transitive + description: + name: flutter_background_service_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.2" + flutter_background_service_platform_interface: + dependency: transitive + description: + name: flutter_background_service_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+3" flutter_gen_core: dependency: transitive description: @@ -373,7 +394,6 @@ packages: description: flutter source: sdk version: "0.0.0" -<<<<<<< HEAD fluwx: dependency: "direct main" description: @@ -381,8 +401,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.9.1" -======= ->>>>>>> 155d2f3fbe4865345533a810a4489d63adad5e1d frontend_server_client: dependency: transitive description: @@ -558,16 +576,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" -<<<<<<< HEAD material_color_utilities: dependency: transitive description: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.4" -======= ->>>>>>> 155d2f3fbe4865345533a810a4489d63adad5e1d + version: "0.1.3" meta: dependency: transitive description: @@ -582,13 +597,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.2" - nested: - dependency: transitive - description: - name: nested - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" package_config: dependency: transitive description: @@ -609,7 +617,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.0" path_provider: dependency: transitive description: @@ -623,7 +631,7 @@ packages: name: path_provider_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.12" + version: "2.0.17" path_provider_ios: dependency: transitive description: @@ -729,13 +737,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.2.4" - provider: - dependency: "direct main" - description: - name: provider - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.3" pub_semver: dependency: "direct dev" description: @@ -819,7 +820,7 @@ packages: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.2" shelf_web_socket: dependency: transitive description: @@ -852,7 +853,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.2" + version: "1.8.1" sp_util: dependency: transitive description: @@ -915,11 +916,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted -<<<<<<< HEAD - version: "0.4.9" -======= - version: "0.4.3" ->>>>>>> 155d2f3fbe4865345533a810a4489d63adad5e1d + version: "0.4.8" time: dependency: transitive description: @@ -961,7 +958,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "2.1.1" velocity_x: dependency: "direct main" description: @@ -1019,10 +1016,5 @@ packages: source: hosted version: "3.1.1" sdks: -<<<<<<< HEAD - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.16.1 <3.0.0" flutter: ">=2.8.1" -======= - dart: ">=2.15.0 <3.0.0" - flutter: ">=2.8.0" ->>>>>>> 155d2f3fbe4865345533a810a4489d63adad5e1d diff --git a/pubspec.yaml b/pubspec.yaml index 4f04080..eec5d0a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,9 +35,8 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 telephony: ^0.1.4 -# 获取来电状态 - provider: ^6.0.3 - permission_handler: ^10.0.0 +## 获取来电状态 +# provider: ^6.0.3 # 获取通话记录 call_log: ^4.0.0 permission_handler: ^10.0.0