From 65e33ae8096c3cd8872f6da1f41f2a1f78c70543 Mon Sep 17 00:00:00 2001 From: lcy <2503978335@qq.com> Date: Sun, 25 Jun 2023 14:31:39 +0800 Subject: [PATCH] feat:更新代码 --- lib/pages/home/home_page.dart | 12 +++--------- lib/pages/home/widgets/home_lesson_item_widget.dart | 6 ++++-- lib/pages/login/forgetpwd/bloc/forget_pwd_home_state.dart | 2 ++ lib/pages/login/forgetpwd/forget_password_home_page.dart | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------- lib/pages/login/loginpage/login_page.dart | 1 + lib/pages/login/loginpage/time_widget.dart | 56 +++++++++++++++++++++++++++++++++++++++----------------- lib/pages/login/setpwd/bloc/set_pwd_bloc.dart | 4 +++- lib/pages/login/setpwd/set_pwd_page.dart | 6 ++++-- 8 files changed, 174 insertions(+), 147 deletions(-) diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index 8a9055e..955b0b0 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:wow_english/common/extension/string_extension.dart'; import 'package:wow_english/pages/home/widgets/home_lesson_item_widget.dart'; @@ -69,17 +68,12 @@ class _HomePageView extends StatelessWidget { }, ), Expanded( - child: PageView.builder( + child: ListView.builder( itemCount: 10, - controller: bloc.pageController, - pageSnapping: false, - onPageChanged: (int index) { - EasyLoading.showToast(index.toString()); - }, - itemBuilder: (BuildContext context,int index){ + scrollDirection: Axis.horizontal, + itemBuilder: (BuildContext context, int index){ return const HomeLessonItem(); }) - , ), SafeArea( child: Padding( diff --git a/lib/pages/home/widgets/home_lesson_item_widget.dart b/lib/pages/home/widgets/home_lesson_item_widget.dart index 9bf3a85..6ccb08f 100644 --- a/lib/pages/home/widgets/home_lesson_item_widget.dart +++ b/lib/pages/home/widgets/home_lesson_item_widget.dart @@ -7,7 +7,7 @@ class HomeLessonItem extends StatelessWidget { @override Widget build(BuildContext context) { return SizedBox( - width: double.infinity, + width: 200, child: ListView.builder( itemCount: 5, scrollDirection: Axis.horizontal, @@ -16,7 +16,9 @@ class HomeLessonItem extends StatelessWidget { return Padding( padding: EdgeInsets.symmetric(horizontal: 4.w), child: Image.network( - 'https://img.liblibai.com/web/648331d5a2cb5.png?image_process=format,webp&x-oss-process=image/resize,w_2980,m_lfit/format,webp', + 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Faa1c2213-820a-4223-8757-5f8cee318a28%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1688713226&t=192b18a613683bcdc5bd76f65c9ff032', + width: 40, + fit: BoxFit.fitHeight, ), ); }), diff --git a/lib/pages/login/forgetpwd/bloc/forget_pwd_home_state.dart b/lib/pages/login/forgetpwd/bloc/forget_pwd_home_state.dart index cbe7bfa..51ab262 100644 --- a/lib/pages/login/forgetpwd/bloc/forget_pwd_home_state.dart +++ b/lib/pages/login/forgetpwd/bloc/forget_pwd_home_state.dart @@ -10,3 +10,5 @@ class SendSmsCodeTypeChangeState extends ForgetPwdHomeState {} class SetPwdTypeChangeState extends ForgetPwdHomeState {} ///验证码验证是否成功 class SetPwdCheckCodeState extends ForgetPwdHomeState {} +///发送验证码 +class SendSmsCodeState extends ForgetPwdHomeState {} diff --git a/lib/pages/login/forgetpwd/forget_password_home_page.dart b/lib/pages/login/forgetpwd/forget_password_home_page.dart index aede945..fd98e2e 100644 --- a/lib/pages/login/forgetpwd/forget_password_home_page.dart +++ b/lib/pages/login/forgetpwd/forget_password_home_page.dart @@ -40,127 +40,129 @@ class _ForgetPasswordHomePageView extends StatelessWidget { body: Container( color: Colors.white, child: SafeArea( - child: ListView( - children: [ - Padding( - padding: EdgeInsets.only(left: 49.w,right: 10.w), - child: Column( - children: [ - 34.verticalSpace, - Row( - children: [ - Image.asset( - 'wow_logo'.assetPng, - height: 49.w, - width: 83.5.h, - ), - 12.5.horizontalSpace, - Text( - '修改密码\n请输入您的手机号和验证码吧', - style: TextStyle( - fontSize: 16.sp, - color: const Color(0xFF666666) - ), - ) - ], - ), - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: Column( - children: [ - 44.5.verticalSpace, - Row( - children: [ - Image.asset( - 'phone'.assetPng, - height: 45.h, - width: 35.w, - ), - 15.horizontalSpace, - Expanded( - child: TextFieldCustomerWidget( - height: 50.h, - hitText: '请输入当前手机号', - textInputType: TextInputType.phone, - bgImageName: 'Input_layer_up', - onChangeValue: (String value) { - bloc.add(PhoneNumChangeEvent()); - }, - controller: bloc.phoneNumController, - ) - ) - ], - ), - 11.5.verticalSpace, - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Image.asset( - 'lock'.assetPng, - height: 34.h, - width: 31.w, - ), - 18.5.horizontalSpace, - Expanded( - child: TextFieldCustomerWidget( - hitText: '请输入验证码', - bgImageName: 'Input_layer_down', - onChangeValue: (String value) { - bloc.add(CheckCodeChangeEvent()); - }, - textInputType: TextInputType.emailAddress, - controller: bloc.checkNumController, - ) - ), - 16.5.horizontalSpace, - TimerWidget(canSendSms: bloc.canSendSms) - ], - ) - ], - ) + child: SingleChildScrollView( + child: Padding( + padding: EdgeInsets.only(left: 49.w,right: 10.w), + child: Column( + children: [ + 34.verticalSpace, + Row( + children: [ + Image.asset( + 'wow_logo'.assetPng, + height: 49.w, + width: 83.5.h, + ), + 12.5.horizontalSpace, + Text( + '修改密码\n请输入您的手机号和验证码吧', + style: TextStyle( + fontSize: 16.sp, + color: const Color(0xFF666666) ), - 2.verticalSpace, - Image.asset( - 'steven_bride'.assetPng, - height: 173.h, - width: 157.w, - ) - ], - ), - GestureDetector( - onTap: () { - if (bloc.canSetPwd) { - bloc.add(SetPassWordEvent()); - } - }, - child: Container( - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage( - bloc.canSetPwd?'login_enter'.assetPng:'login_enter_dis'.assetPng + ) + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + children: [ + 44.5.verticalSpace, + Row( + children: [ + Image.asset( + 'phone'.assetPng, + height: 45.h, + width: 35.w, + ), + 15.horizontalSpace, + Expanded( + child: TextFieldCustomerWidget( + height: 50.h, + hitText: '请输入当前手机号', + textInputType: TextInputType.phone, + bgImageName: 'Input_layer_up', + onChangeValue: (String value) { + bloc.add(PhoneNumChangeEvent()); + }, + controller: bloc.phoneNumController, + ) + ) + ], ), - fit: BoxFit.fill - ), - ), - padding: EdgeInsets.symmetric( - horizontal: 28.w, - vertical: 14.h + 11.5.verticalSpace, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Image.asset( + 'lock'.assetPng, + height: 34.h, + width: 31.w, + ), + 18.5.horizontalSpace, + Expanded( + child: TextFieldCustomerWidget( + hitText: '请输入验证码', + bgImageName: 'Input_layer_down', + onChangeValue: (String value) { + bloc.add(CheckCodeChangeEvent()); + }, + textInputType: TextInputType.emailAddress, + controller: bloc.checkNumController, + ) + ), + 16.5.horizontalSpace, + TimerWidget( + pageType: 1, + canSendSms: bloc.canSendSms, + sendSmsEvent: () => bloc.add(SendSmsCodeEvent()), + ) + ], + ) + ], + ) + ), + 2.verticalSpace, + Image.asset( + 'steven_bride'.assetPng, + height: 173.h, + width: 157.w, + ) + ], + ), + GestureDetector( + onTap: () { + if (bloc.canSetPwd) { + bloc.add(SetPassWordEvent()); + } + }, + child: Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage( + bloc.canSetPwd?'login_enter'.assetPng:'login_enter_dis'.assetPng + ), + fit: BoxFit.fill ), - child: Text( - '确定', - style: TextStyle( - fontSize: 16.sp, - color: Colors.white - ), + ), + padding: EdgeInsets.symmetric( + horizontal: 28.w, + vertical: 14.h + ), + child: Text( + '确定', + style: TextStyle( + fontSize: 16.sp, + color: Colors.white ), ), - ) - ], - ), - ) - ], + ), + ) + ], + ), + ), ), ), ), diff --git a/lib/pages/login/loginpage/login_page.dart b/lib/pages/login/loginpage/login_page.dart index 1b326be..51ce190 100644 --- a/lib/pages/login/loginpage/login_page.dart +++ b/lib/pages/login/loginpage/login_page.dart @@ -126,6 +126,7 @@ class _LoginPageView extends StatelessWidget { GestureDetector( onTap: () { if (bloc.canLogin) { + // Navigator.of(context).pushNamed(AppRouteName.home); bloc.add(RequestLoginEvent()); } }, diff --git a/lib/pages/login/loginpage/time_widget.dart b/lib/pages/login/loginpage/time_widget.dart index bd70045..019dd41 100644 --- a/lib/pages/login/loginpage/time_widget.dart +++ b/lib/pages/login/loginpage/time_widget.dart @@ -5,11 +5,13 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:wow_english/common/blocs/timerbloc/timer_bloc.dart'; import 'package:wow_english/common/extension/string_extension.dart'; import 'package:wow_english/common/widgets/timer_ticker.dart'; +import 'package:wow_english/pages/login/forgetpwd/bloc/forget_pwd_home_bloc.dart'; import 'package:wow_english/pages/login/loginpage/bloc/login_bloc.dart'; class TimerWidget extends StatelessWidget { - const TimerWidget({super.key, required this.canSendSms,this.sendSmsEvent}); + const TimerWidget({super.key, required this.canSendSms,this.sendSmsEvent,this.pageType = 0}); + final int pageType; final bool canSendSms; final Function()? sendSmsEvent; @@ -18,6 +20,7 @@ class TimerWidget extends StatelessWidget { return BlocProvider( create: (_) => TimerBloc(ticker: const TimerTicker()), child: TimerWidgetView( + pageType: pageType, canSendSms: canSendSms, sendSmsEvent: sendSmsEvent, ), @@ -27,28 +30,47 @@ class TimerWidget extends StatelessWidget { class TimerWidgetView extends StatelessWidget { final bool canSendSms; + final int pageType; final Function()? sendSmsEvent; - const TimerWidgetView({super.key, required this.canSendSms,this.sendSmsEvent}); + const TimerWidgetView({super.key, required this.canSendSms,this.sendSmsEvent,this.pageType = 0}); @override Widget build(BuildContext context) { return MultiBlocListener( listeners: [ - BlocListener( - listener: (context, s) { - if (s is FinishedState) { - ///重置计时器 - context.read().add(ResetEvent()); - } - }), - BlocListener( - listener: (context, s) { - if (s is SmsCodeRequestState) { - final bloc = BlocProvider.of(context); - ///开始倒计时 - bloc.add(StartEvent(duration: bloc.state.duration)); - } - }), + if(pageType == 0) ...[//登陆 + BlocListener( + listener: (context, s) { + if (s is FinishedState) { + ///重置计时器 + context.read().add(ResetEvent()); + } + }), + BlocListener( + listener: (context, s) { + if (s is SmsCodeRequestState) { + final bloc = BlocProvider.of(context); + ///开始倒计时 + bloc.add(StartEvent(duration: bloc.state.duration)); + } + }), + ] else if (pageType == 1) ...[//忘记密码 + BlocListener( + listener: (context, s) { + if (s is FinishedState) { + ///重置计时器 + context.read().add(ResetEvent()); + } + }), + BlocListener( + listener: (context, s) { + if (s is SendSmsCodeState) { + final bloc = BlocProvider.of(context); + ///开始倒计时 + bloc.add(StartEvent(duration: bloc.state.duration)); + } + }), + ] ], child: _buildCountdownWidget(), ); diff --git a/lib/pages/login/setpwd/bloc/set_pwd_bloc.dart b/lib/pages/login/setpwd/bloc/set_pwd_bloc.dart index 50747c3..4049f94 100644 --- a/lib/pages/login/setpwd/bloc/set_pwd_bloc.dart +++ b/lib/pages/login/setpwd/bloc/set_pwd_bloc.dart @@ -7,6 +7,8 @@ part 'set_pwd_state.dart'; class SetPwdBloc extends Bloc { final String? phoneNumber; + final String? code; + final int? type; final TextEditingController passWordFirstController = TextEditingController(); final TextEditingController passWordSecondController = TextEditingController(); @@ -33,7 +35,7 @@ class SetPwdBloc extends Bloc { bool get ensure => _passwordCheck && _passwordEnsure; - SetPwdBloc(this.phoneNumber) : super(SetPwdInitial()) { + SetPwdBloc(this.phoneNumber, this.code, this.type) : super(SetPwdInitial()) { on(_pwdEnsureTextChange); on(_pwdCheckTextChange); on(_setPassword); diff --git a/lib/pages/login/setpwd/set_pwd_page.dart b/lib/pages/login/setpwd/set_pwd_page.dart index c8ac59d..debde6a 100644 --- a/lib/pages/login/setpwd/set_pwd_page.dart +++ b/lib/pages/login/setpwd/set_pwd_page.dart @@ -9,13 +9,15 @@ import 'bloc/set_pwd_bloc.dart'; class SetPassWordPage extends StatelessWidget { - const SetPassWordPage({super.key, this.phoneNum}); + const SetPassWordPage({super.key,this.phoneNum,this.code,this.type}); final String? phoneNum; + final String? code; + final int? type; @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => SetPwdBloc(phoneNum), + create: (context) => SetPwdBloc(phoneNum,code,type), child: _SetPassWordPageView(), ); } -- libgit2 0.22.2