Commit 5b87e560f8bc90b58dd1ea1292e26a9efaa55a40

Authored by 吴启风
1 parent e620143b

feat:导航栏视觉优化

lib/pages/login/forgetpwd/forget_password_home_page.dart
... ... @@ -7,6 +7,7 @@ import 'package:wow_english/pages/login/loginpage/time_widget.dart';
7 7 import 'package:wow_english/pages/login/setpwd/set_pwd_page.dart';
8 8 import 'package:wow_english/utils/toast_util.dart';
9 9  
  10 +import '../../../common/widgets/we_app_bar.dart';
10 11 import 'bloc/forget_pwd_home_bloc.dart';
11 12  
12 13 class ForgetPasswordHomePage extends StatelessWidget {
... ... @@ -50,136 +51,118 @@ class _ForgetPasswordHomePageView extends StatelessWidget {
50 51 Widget _buildForgetPwdView() => BlocBuilder<ForgetPwdHomeBloc, ForgetPwdHomeState>(builder: (context, state) {
51 52 final bloc = BlocProvider.of<ForgetPwdHomeBloc>(context);
52 53 return Scaffold(
  54 + appBar: const WEAppBar(),
53 55 body: Container(
54 56 color: Colors.white,
55 57 child: SafeArea(
56   - child: Stack(
57   - children: [
58   - SingleChildScrollView(
59   - child: Padding(
60   - padding: EdgeInsets.only(left: 49.w, right: 10.w),
61   - child: Column(
62   - children: [
63   - 34.verticalSpace,
64   - Row(
65   - children: [
66   - Image.asset(
67   - 'wow_logo'.assetPng,
68   - height: 49.w,
69   - width: 83.5.h,
70   - ),
71   - 12.5.horizontalSpace,
72   - Text(
73   - '修改密码\n请输入您的手机号和验证码吧',
74   - style: TextStyle(fontSize: 16.sp, color: const Color(0xFF666666)),
75   - )
76   - ],
77   - ),
78   - Row(
79   - crossAxisAlignment: CrossAxisAlignment.start,
80   - children: [
81   - Expanded(
82   - child: Column(
83   - children: [
84   - 44.5.verticalSpace,
85   - Row(
86   - children: [
87   - Image.asset(
88   - 'phone'.assetPng,
89   - height: 45.h,
90   - width: 35.w,
91   - ),
92   - 15.horizontalSpace,
93   - Expanded(
94   - child: TextFieldCustomerWidget(
95   - height: 50.h,
96   - hitText: '请输入当前手机号',
97   - textInputType: TextInputType.phone,
98   - bgImageName: 'Input_layer_up',
99   - onChangeValue: (String value) {
100   - bloc.add(PhoneNumChangeEvent());
101   - },
102   - controller: bloc.phoneNumController,
103   - ))
104   - ],
105   - ),
106   - 11.5.verticalSpace,
107   - Row(
108   - mainAxisAlignment: MainAxisAlignment.spaceBetween,
109   - children: [
110   - Image.asset(
111   - 'lock'.assetPng,
112   - height: 34.h,
113   - width: 31.w,
114   - ),
115   - 18.5.horizontalSpace,
116   - Expanded(
117   - child: TextFieldCustomerWidget(
118   - hitText: '请输入验证码',
119   - bgImageName: 'Input_layer_down',
120   - onChangeValue: (String value) {
121   - bloc.add(CheckCodeChangeEvent());
122   - },
123   - textInputType: TextInputType.emailAddress,
124   - controller: bloc.checkNumController,
125   - )),
126   - 16.5.horizontalSpace,
127   - TimerWidget(
128   - pageType: 1,
129   - canSendSms: bloc.canSendSms,
130   - sendSmsEvent: () => bloc.add(SendSmsCodeEvent()),
131   - )
132   - ],
133   - )
134   - ],
135   - )),
136   - 2.verticalSpace,
137   - Image.asset(
138   - 'steven_bride'.assetPng,
139   - height: 173.h,
140   - width: 157.w,
141   - )
142   - ],
143   - ),
144   - GestureDetector(
145   - onTap: () {
146   - if (bloc.canSetPwd) {
147   - bloc.add(SetPassWordEvent());
148   - }
149   - },
150   - child: Container(
151   - decoration: BoxDecoration(
152   - image: DecorationImage(
153   - image: AssetImage(bloc.canSetPwd ? 'login_enter'.assetPng : 'login_enter_dis'.assetPng),
154   - fit: BoxFit.fill),
155   - ),
156   - padding: EdgeInsets.symmetric(horizontal: 28.w, vertical: 14.h),
157   - child: Text(
158   - '确定',
159   - style: TextStyle(fontSize: 16.sp, color: Colors.white),
160   - ),
161   - ),
162   - )
163   - ],
164   - ),
  58 + child: SingleChildScrollView(
  59 + child: Padding(
  60 + padding: EdgeInsets.only(left: 49.w, right: 10.w),
  61 + child: Column(
  62 + children: [
  63 + Row(
  64 + children: [
  65 + Image.asset(
  66 + 'wow_logo'.assetPng,
  67 + height: 49.w,
  68 + width: 83.5.h,
  69 + ),
  70 + 12.5.horizontalSpace,
  71 + Text(
  72 + '修改密码\n请输入您的手机号和验证码吧',
  73 + style: TextStyle(fontSize: 16.sp, color: const Color(0xFF666666)),
  74 + )
  75 + ],
165 76 ),
166   - ),
167   - Container(
168   - padding: EdgeInsets.only(top: 16.h),
169   - alignment: Alignment.topLeft,
170   - child: IconButton(
171   - onPressed: () {
172   - Navigator.pop(context);
173   - },
174   - icon: Image.asset(
175   - 'back_around'.assetPng,
176   - width: 40.w,
177   - height: 40.h,
178   - )
  77 + Row(
  78 + crossAxisAlignment: CrossAxisAlignment.start,
  79 + children: [
  80 + Expanded(
  81 + child: Column(
  82 + children: [
  83 + 44.5.verticalSpace,
  84 + Row(
  85 + children: [
  86 + Image.asset(
  87 + 'phone'.assetPng,
  88 + height: 45.h,
  89 + width: 35.w,
  90 + ),
  91 + 15.horizontalSpace,
  92 + Expanded(
  93 + child: TextFieldCustomerWidget(
  94 + height: 50.h,
  95 + hitText: '请输入当前手机号',
  96 + textInputType: TextInputType.phone,
  97 + bgImageName: 'Input_layer_up',
  98 + onChangeValue: (String value) {
  99 + bloc.add(PhoneNumChangeEvent());
  100 + },
  101 + controller: bloc.phoneNumController,
  102 + ))
  103 + ],
  104 + ),
  105 + 11.5.verticalSpace,
  106 + Row(
  107 + mainAxisAlignment: MainAxisAlignment.spaceBetween,
  108 + children: [
  109 + Image.asset(
  110 + 'lock'.assetPng,
  111 + height: 34.h,
  112 + width: 31.w,
  113 + ),
  114 + 18.5.horizontalSpace,
  115 + Expanded(
  116 + child: TextFieldCustomerWidget(
  117 + hitText: '请输入验证码',
  118 + bgImageName: 'Input_layer_down',
  119 + onChangeValue: (String value) {
  120 + bloc.add(CheckCodeChangeEvent());
  121 + },
  122 + textInputType: TextInputType.emailAddress,
  123 + controller: bloc.checkNumController,
  124 + )),
  125 + 16.5.horizontalSpace,
  126 + TimerWidget(
  127 + pageType: 1,
  128 + canSendSms: bloc.canSendSms,
  129 + sendSmsEvent: () => bloc.add(SendSmsCodeEvent()),
  130 + )
  131 + ],
  132 + )
  133 + ],
  134 + )),
  135 + 2.verticalSpace,
  136 + Image.asset(
  137 + 'steven_bride'.assetPng,
  138 + height: 173.h,
  139 + width: 157.w,
  140 + )
  141 + ],
179 142 ),
180   - ),
181   - ]
182   - )
  143 + GestureDetector(
  144 + onTap: () {
  145 + if (bloc.canSetPwd) {
  146 + bloc.add(SetPassWordEvent());
  147 + }
  148 + },
  149 + child: Container(
  150 + decoration: BoxDecoration(
  151 + image: DecorationImage(
  152 + image: AssetImage(bloc.canSetPwd ? 'login_enter'.assetPng : 'login_enter_dis'.assetPng),
  153 + fit: BoxFit.fill),
  154 + ),
  155 + padding: EdgeInsets.symmetric(horizontal: 28.w, vertical: 14.h),
  156 + child: Text(
  157 + '确定',
  158 + style: TextStyle(fontSize: 16.sp, color: Colors.white),
  159 + ),
  160 + ),
  161 + )
  162 + ],
  163 + ),
  164 + ),
  165 + ),
183 166 ),
184 167 ),
185 168 );
... ...
lib/pages/module/module_page.dart renamed to lib/pages/module/course_module_page.dart
... ... @@ -9,9 +9,9 @@ import &#39;package:wow_english/route/route.dart&#39;;
9 9 import 'bloc/module_bloc.dart';
10 10 import 'widgets/module_item_widget.dart';
11 11  
12   -// 阶段(模块)列表页
13   -class ModulePage extends StatelessWidget {
14   - const ModulePage({super.key, this.starPageIndex});
  12 +// 课程阶段(模块)列表页
  13 +class CourseModulePage extends StatelessWidget {
  14 + const CourseModulePage({super.key, this.starPageIndex});
15 15  
16 16 final int? starPageIndex;
17 17  
... ... @@ -37,26 +37,7 @@ class _LessonPageView extends StatelessWidget {
37 37 return BlocListener<ModuleBloc, ModuleState>(
38 38 listener: (context, state) {},
39 39 child: Scaffold(
40   - appBar: WEAppBar(
41   - leading: IconButton(
42   - onPressed: () {
43   - popPage();
44   - },
45   - icon: Image.asset(
46   - 'back'.assetPng,
47   - height: 43,
48   - width: 43,
49   - )),
50   - // actions: <Widget>[
51   - // IconButton(
52   - // icon: Image.asset('shop'.assetPng),
53   - // color: Colors.white,
54   - // onPressed: () {
55   - // showToast('购买');
56   - // },
57   - // )
58   - // ],
59   - ),
  40 + appBar: const WEAppBar(),
60 41 body: _lessViewWidget(),
61 42 ),
62 43 );
... ...
lib/pages/shop/exchane/exchange_lesson_page.dart
... ... @@ -6,6 +6,7 @@ import &#39;package:wow_english/common/widgets/textfield_customer_widget.dart&#39;;
6 6 import 'package:wow_english/pages/shop/exchane/widegts/exchange_result_dialog.dart';
7 7 import 'package:wow_english/route/route.dart';
8 8  
  9 +import '../../../common/widgets/we_app_bar.dart';
9 10 import 'bloc/exchange_lesson_bloc.dart';
10 11  
11 12 class ExchangeLessonPage extends StatelessWidget {
... ... @@ -29,102 +30,102 @@ class _ExchangeLessonPage extends StatelessWidget {
29 30 showDialog<ExChangeResultDialog>(
30 31 context: context,
31 32 barrierDismissible: !state.result,
32   - builder: (context){
  33 + builder: (context) {
33 34 return ExChangeResultDialog(
34   - resultType:state.result,
35   - onTap:(){
  35 + resultType: state.result,
  36 + onTap: () {
36 37 popPage();
37   - }
38   - );
39   - });
  38 + });
  39 + });
40 40 }
41 41 },
42 42 child: _exchangeLessonPageView(),
43 43 );
44 44 }
45 45  
46   - Widget _exchangeLessonPageView() => BlocBuilder<ExchangeLessonBloc, ExchangeLessonState>(builder: (context, state) {
  46 + Widget _exchangeLessonPageView() =>
  47 + BlocBuilder<ExchangeLessonBloc, ExchangeLessonState>(
  48 + builder: (context, state) {
47 49 final bloc = BlocProvider.of<ExchangeLessonBloc>(context);
48 50 return Scaffold(
49   - resizeToAvoidBottomInset: false,
50   - body: Container(
51   - color: Colors.white,
52   - child: Column(
53   - mainAxisAlignment: MainAxisAlignment.center,
  51 + resizeToAvoidBottomInset: false,
  52 + body: Stack(
54 53 children: [
55   - 10.5.verticalSpace,
56   - Padding(
57   - padding: EdgeInsets.symmetric(horizontal: 15.w),
58   - child: Row(
59   - mainAxisAlignment: MainAxisAlignment.spaceBetween,
60   - crossAxisAlignment: CrossAxisAlignment.start,
  54 + Container(
  55 + color: Colors.white,
  56 + child: Column(
  57 + mainAxisAlignment: MainAxisAlignment.center,
61 58 children: [
62   - IconButton(
63   - icon: Image.asset(
64   - 'back_around'.assetPng,
65   - width: 40,
66   - height: 40,
  59 + 10.5.verticalSpace,
  60 + Padding(
  61 + padding: EdgeInsets.symmetric(horizontal: 15.w),
  62 + child: Center(
  63 + child: Image.asset(
  64 + 'wow_ex_lesson'.assetPng,
  65 + width: 139.w,
  66 + height: 81.h,
  67 + ),
  68 + ),
  69 + ),
  70 + Expanded(
  71 + child: Padding(
  72 + padding: EdgeInsets.symmetric(horizontal: 135.w),
  73 + child: Column(
  74 + mainAxisAlignment: MainAxisAlignment.center,
  75 + children: [
  76 + TextFieldCustomerWidget(
  77 + height: 55.h,
  78 + hitText: '请输入兑换码',
  79 + bgImageName: 'Input_layer_up',
  80 + textInputType: TextInputType.emailAddress,
  81 + controller: bloc.codeNumberController,
  82 + onChangeValue: (String value) {
  83 + bloc.add(CodeNumberChangeEvent());
  84 + },
  85 + ),
  86 + 21.5.verticalSpace,
  87 + GestureDetector(
  88 + onTap: () {
  89 + if (bloc.checkCode) {
  90 + bloc.add(CheckCodeEvent());
  91 + }
  92 + },
  93 + child: Container(
  94 + decoration: BoxDecoration(
  95 + image: DecorationImage(
  96 + image: AssetImage(bloc.checkCode
  97 + ? 'ex_sure'.assetPng
  98 + : 'ex_dis'.assetPng),
  99 + fit: BoxFit.fill),
  100 + ),
  101 + padding: EdgeInsets.symmetric(
  102 + horizontal: 27.w, vertical: 14.h),
  103 + child: Text(
  104 + '兑换',
  105 + style: TextStyle(
  106 + fontSize: 16.sp, color: Colors.white),
  107 + ),
  108 + ),
  109 + )
  110 + ],
  111 + ),
67 112 ),
68   - color: Colors.white,
69   - onPressed: () {
70   - Navigator.pop(context);
71   - },
72 113 ),
73 114 Image.asset(
74   - 'wow_ex_lesson'.assetPng,
75   - width: 139.w,
76   - height: 81.h,
  115 + 'bottom_grass'.assetPng,
77 116 ),
78   - SizedBox.fromSize(size: const Size(40.0, 40.0))
79 117 ],
80 118 ),
81 119 ),
82   - Expanded(
83   - child: Padding(
84   - padding: EdgeInsets.symmetric(horizontal: 135.w),
85   - child: Column(
86   - mainAxisAlignment: MainAxisAlignment.center,
87   - children: [
88   - TextFieldCustomerWidget(
89   - height: 55.h,
90   - hitText: '请输入兑换码',
91   - bgImageName: 'Input_layer_up',
92   - textInputType: TextInputType.emailAddress,
93   - controller: bloc.codeNumberController,
94   - onChangeValue: (String value) {
95   - bloc.add(CodeNumberChangeEvent());
96   - },
97   - ),
98   - 21.5.verticalSpace,
99   - GestureDetector(
100   - onTap: () {
101   - if (bloc.checkCode) {
102   - bloc.add(CheckCodeEvent());
103   - }
104   - },
105   - child: Container(
106   - decoration: BoxDecoration(
107   - image: DecorationImage(
108   - image: AssetImage(bloc.checkCode ? 'ex_sure'.assetPng : 'ex_dis'.assetPng),
109   - fit: BoxFit.fill),
110   - ),
111   - padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 14.h),
112   - child: Text(
113   - '兑换',
114   - style: TextStyle(fontSize: 16.sp, color: Colors.white),
115   - ),
116   - ),
117   - )
118   - ],
119   - ),
  120 + const Positioned(
  121 + top: 0,
  122 + left: 0,
  123 + right: 0,
  124 + child: WEAppBar(
  125 + backgroundColor: Colors.transparent,
120 126 ),
121 127 ),
122   - Image.asset(
123   - 'bottom_grass'.assetPng,
124   - ),
125 128 ],
126   - ),
127   - ),
128   - );
  129 + ));
129 130 });
130 131 }
... ...
lib/pages/tab/tab_page.dart
1 1 import 'package:flutter/material.dart';
2 2 import 'package:flutter_bloc/flutter_bloc.dart';
3   -import 'package:wow_english/pages/module/module_page.dart';
  3 +import 'package:wow_english/pages/module/course_module_page.dart';
4 4  
5 5 import '../unit/view.dart';
6 6 import 'blocs/tab_bloc.dart';
... ... @@ -10,7 +10,7 @@ class TabPage extends StatelessWidget {
10 10  
11 11 final _pages =const <Widget>[
12 12 UnitPage(),
13   - ModulePage()
  13 + CourseModulePage()
14 14 ];
15 15  
16 16 final _tabIcons = const <Icon>[
... ...
lib/route/route.dart
... ... @@ -11,7 +11,7 @@ import &#39;package:wow_english/pages/listen/listen_page.dart&#39;;
11 11 import 'package:wow_english/pages/login/forgetpwd/forget_password_home_page.dart';
12 12 import 'package:wow_english/pages/login/loginpage/login_page.dart';
13 13 import 'package:wow_english/pages/login/setpwd/set_pwd_page.dart';
14   -import 'package:wow_english/pages/module/module_page.dart';
  14 +import 'package:wow_english/pages/module/course_module_page.dart';
15 15 import 'package:wow_english/pages/practice/topic_picture_page.dart';
16 16 import 'package:wow_english/pages/repeatafter/repeat_after_page.dart';
17 17 import 'package:wow_english/pages/repeataftercontent/repeat_after_content_page.dart';
... ... @@ -115,7 +115,7 @@ class AppRouter {
115 115 return CupertinoPageRoute(
116 116 builder: (_) => const ForgetPasswordHomePage());
117 117 case AppRouteName.courseModule:
118   - return CupertinoPageRoute(builder: (_) => const ModulePage());
  118 + return CupertinoPageRoute(builder: (_) => const CourseModulePage());
119 119 case AppRouteName.courseUnit:
120 120 CourseModuleEntity courseModuleEntity = CourseModuleEntity();
121 121 if (settings.arguments != null) {
... ...