diff --git a/lib/main.dart b/lib/main.dart index 734b975..9ac93ae 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import 'package:aku_new_community_manager/provider/app_provider.dart'; import 'package:aku_new_community_manager/provider/data_provider.dart'; import 'package:aku_new_community_manager/provider/message_provider.dart'; +import 'package:aku_new_community_manager/provider/timer_provider.dart'; import 'package:aku_new_community_manager/provider/user_provider.dart'; import 'package:aku_new_community_manager/style/apptheme.dart'; import 'package:aku_new_community_manager/tools/user_tool.dart'; @@ -77,6 +78,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (context) => AppProvider()), ChangeNotifierProvider(create: (context) => MessageProvider()), ChangeNotifierProvider(create: (context) => DataProvider()), + ChangeNotifierProvider(create: (context) => ClockTimerProvider()), ], child: GestureDetector( onTap: () { diff --git a/lib/new_ui/auth/code_message_page.dart b/lib/new_ui/auth/code_message_page.dart index 78b1933..054a166 100644 --- a/lib/new_ui/auth/code_message_page.dart +++ b/lib/new_ui/auth/code_message_page.dart @@ -5,9 +5,12 @@ import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:provider/provider.dart'; import 'package:sms_autofill/sms_autofill.dart'; import 'package:velocity_x/velocity_x.dart'; +import '../../provider/timer_provider.dart'; + class CodeMessagePage extends StatefulWidget { final String tel; @@ -38,6 +41,7 @@ class _CodeMessagePageState extends State { @override Widget build(BuildContext context) { + ClockTimerProvider clockTimer = Provider.of(context); return AkuScaffold( title: '', body: SafeArea( @@ -115,14 +119,14 @@ class _CodeMessagePageState extends State { .communityModel!.id); if (base.success) { _errorMessage = null; - UserTool.appProvider.startTimer(); + clockTimer.startTimer(); } else { BotToast.showText(text: base.msg); } }, - child: (UserTool.appProvider.second >= 60 + child: (clockTimer.second >= 60 ? '重新发送验证码' - : '${UserTool.appProvider.second}秒后可重新发送') + : '${clockTimer.second}秒后可重新发送') .text .size(28.sp) .color(Color(0xFF5096F1)) diff --git a/lib/new_ui/auth/forgot_psd_page.dart b/lib/new_ui/auth/forgot_psd_page.dart index 4228912..ac5cb72 100644 --- a/lib/new_ui/auth/forgot_psd_page.dart +++ b/lib/new_ui/auth/forgot_psd_page.dart @@ -8,8 +8,10 @@ import 'package:common_utils/common_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:provider/provider.dart'; import 'package:velocity_x/velocity_x.dart'; +import '../../provider/timer_provider.dart'; import 'forgot_set_psd_page.dart'; class ForgotPsdPage extends StatefulWidget { @@ -30,6 +32,7 @@ class _ForgotPsdPageState extends State { @override Widget build(BuildContext context) { + ClockTimerProvider clockTimer = Provider.of(context); return AkuScaffold( title: '', backgroundColor: Colors.white, @@ -84,7 +87,7 @@ class _ForgotPsdPageState extends State { Get.to(() => ForgotSetPsdPage( tel: _telController.text, )); - UserTool.appProvider.startTimer(); + clockTimer.startTimer(); } else { BotToast.showText(text: base.msg); } diff --git a/lib/new_ui/auth/forgot_set_psd_page.dart b/lib/new_ui/auth/forgot_set_psd_page.dart index c536cc8..9c4306a 100644 --- a/lib/new_ui/auth/forgot_set_psd_page.dart +++ b/lib/new_ui/auth/forgot_set_psd_page.dart @@ -10,8 +10,11 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:provider/provider.dart'; import 'package:velocity_x/velocity_x.dart'; +import '../../provider/timer_provider.dart'; + class ForgotSetPsdPage extends StatefulWidget { final String tel; @@ -52,6 +55,7 @@ class _ForgotSetPsdPageState extends State { @override Widget build(BuildContext context) { + ClockTimerProvider clockTimer = Provider.of(context); return AkuScaffold( title: '', backgroundColor: Colors.white, @@ -129,7 +133,7 @@ class _ForgotSetPsdPageState extends State { Get.to(() => ForgotSetPsdPage( tel: widget.tel, )); - UserTool.appProvider.startTimer(); + clockTimer.startTimer(); } else { BotToast.showText(text: base.msg); } @@ -137,7 +141,7 @@ class _ForgotSetPsdPageState extends State { child: Row( mainAxisSize: MainAxisSize.min, children: [ - '|${UserTool.appProvider.second < 60 ? '${UserTool.appProvider.second}秒后重新获取' : '获取验证码'}' + '|${clockTimer.second < 60 ? '${clockTimer.second}秒后重新获取' : '获取验证码'}' .text .size(28.sp) .color(Color(0xFF5096F1)) diff --git a/lib/new_ui/auth/other_login_page.dart b/lib/new_ui/auth/other_login_page.dart index 66bc147..f88cc16 100644 --- a/lib/new_ui/auth/other_login_page.dart +++ b/lib/new_ui/auth/other_login_page.dart @@ -3,6 +3,7 @@ import 'package:aku_new_community_manager/new_ui/auth/widget/login_button_widget import 'package:aku_new_community_manager/new_ui/auth/widget/psd_textfield.dart'; import 'package:aku_new_community_manager/new_ui/auth/widget/tel_textfield.dart'; import 'package:aku_new_community_manager/provider/app_provider.dart'; +import 'package:aku_new_community_manager/provider/timer_provider.dart'; import 'package:aku_new_community_manager/tools/user_tool.dart'; import 'package:aku_new_community_manager/ui/widgets/common/aku_scaffold.dart'; import 'package:bot_toast/bot_toast.dart'; @@ -154,7 +155,7 @@ class _OtherLoginPageState extends State { } Widget _verificationView() { - AppProvider appProvider = Provider.of(context); + ClockTimerProvider clockTimer = Provider.of(context); return ListView( padding: EdgeInsets.symmetric(horizontal: 32.w), children: [ @@ -171,7 +172,7 @@ class _OtherLoginPageState extends State { ), 100.w.heightBox, LoginButtonWidget( - onTap: UserTool.appProvider.second < 60 + onTap: clockTimer.second < 60 ? () {} : () async { var check = checkInput(); @@ -184,13 +185,13 @@ class _OtherLoginPageState extends State { .communityModel!.id); if (base.success) { Get.to(() => CodeMessagePage(tel: _tel.text)); - appProvider.startTimer(); + clockTimer.startTimer(); } else { BotToast.showText(text: base.msg); } }, - text: appProvider.timerStart - ? '${appProvider.second}秒后重新获取' + text: clockTimer.timerStart + ? '${clockTimer.second}秒后重新获取' : '获取验证码'), 24.w.heightBox, Row( diff --git a/lib/provider/app_provider.dart b/lib/provider/app_provider.dart index fce1dee..8bd19d5 100644 --- a/lib/provider/app_provider.dart +++ b/lib/provider/app_provider.dart @@ -149,7 +149,7 @@ class AppProvider extends ChangeNotifier { } ///登录页验证码计时器 - int second = 60; + /*int second = 60; bool timerStart = false; Timer? timer; @@ -171,5 +171,6 @@ class AppProvider extends ChangeNotifier { timer?.cancel(); timer = null; notifyListeners(); - } + }*/ + notifyListeners(); } diff --git a/lib/provider/timer_provider.dart b/lib/provider/timer_provider.dart new file mode 100644 index 0000000..aa33dd8 --- /dev/null +++ b/lib/provider/timer_provider.dart @@ -0,0 +1,30 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +class ClockTimerProvider extends ChangeNotifier{ + ///登录页验证码计时器 + int second = 60; + bool timerStart = false; + Timer? timer; + + void startTimer() { + timerStart = true; + timer = Timer.periodic(Duration(seconds: 1), (timer) { + if (second > 0) { + second--; + notifyListeners(); + } else { + stopTimer(); + } + }); + } + + void stopTimer() { + second = 60; + timerStart = false; + timer?.cancel(); + timer = null; + notifyListeners(); + } +} \ No newline at end of file diff --git a/lib/tools/user_tool.dart b/lib/tools/user_tool.dart index 195ad82..4c9ca0d 100644 --- a/lib/tools/user_tool.dart +++ b/lib/tools/user_tool.dart @@ -3,6 +3,7 @@ import 'package:aku_new_community_manager/provider/app_provider.dart'; import 'package:aku_new_community_manager/provider/data_provider.dart'; import 'package:aku_new_community_manager/provider/message_provider.dart'; +import 'package:aku_new_community_manager/provider/timer_provider.dart'; import 'package:aku_new_community_manager/provider/user_provider.dart'; import 'package:get/get.dart'; import 'package:provider/provider.dart'; @@ -25,5 +26,9 @@ class UserTool { static DataProvider get dataProvider => Provider.of(Get.context!, listen: false); + ///验证码倒计时 + static ClockTimerProvider get clockProvider => + Provider.of(Get.context!, listen: false); + UserTool(); } diff --git a/lib/ui/widgets/common/bee_picker_box.dart b/lib/ui/widgets/common/bee_picker_box.dart index 0d7d666..dd03efb 100644 --- a/lib/ui/widgets/common/bee_picker_box.dart +++ b/lib/ui/widgets/common/bee_picker_box.dart @@ -25,7 +25,10 @@ class BeePickerBox extends StatelessWidget { // height: 48.w, child: TextButton( onPressed: onPressed, - child: Text(title,style: TextStyle(color: Colors.black.withOpacity(0.85)),), + child: Text( + title, + style: TextStyle(color: Colors.black.withOpacity(0.85)), + ), ), ); } @@ -41,26 +44,42 @@ class BeePickerBox extends StatelessWidget { children: [ SizedBox( height: 88.w, - child: NavigationToolbar( - leading: TextButton( - onPressed: () => Navigator.pop(context), - child: Text( - '取消', + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + TextButton( + onPressed: () => Navigator.pop(context), + child: Text( + '取消', + style: TextStyle( + color: Colors.black, + fontSize: 28.sp, + ), + ), ), - ), - middle: Text( - title ?? '', - style: TextStyle( - color: kTextPrimaryColor, - fontSize: 28.sp, + Spacer(), + Container( + padding: EdgeInsets.all(25.w), + child: Text( + title ?? '', + style: TextStyle( + color: kTextPrimaryColor, + fontSize: 28.sp, + ), + ), ), - ), - trailing: TextButton( - onPressed: onPressed, - child: Text( - '${confirmString}', + Spacer(), + TextButton( + onPressed: onPressed, + child: Text( + '${confirmString}', + style: TextStyle( + color: Colors.black, + fontSize: 28.sp, + ), + ), ), - ), + ], ), ), BeeDivider.horizontal(), diff --git a/pubspec.lock b/pubspec.lock index 7036f2a..b6a3240 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -618,6 +618,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -958,7 +965,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" time: dependency: transitive description: