Commit 1e7094e3fd9fe769a29f0b54dc8a934fb015de78

Authored by liangchengyou
1 parent f5fc01c1

feat:适配ipad

lib/common/pages/wow_web_page.dart
@@ -61,7 +61,12 @@ class _WowWebViewPageState extends State<WowWebViewPage> { @@ -61,7 +61,12 @@ class _WowWebViewPageState extends State<WowWebViewPage> {
61 appBar: WEAppBar( 61 appBar: WEAppBar(
62 titleText: widget.webViewTitle, 62 titleText: widget.webViewTitle,
63 ), 63 ),
64 - body: WebViewWidget(controller: _controller,), 64 + body: Container(
  65 + color: Colors.white,
  66 + child: SafeArea(
  67 + child: WebViewWidget(controller: _controller,),
  68 + )
  69 + ),
65 ); 70 );
66 } 71 }
67 } 72 }
lib/generated/json/course_entity.g.dart
@@ -86,6 +86,10 @@ CourseCourseLessons $CourseCourseLessonsFromJson(Map<String, dynamic> json) { @@ -86,6 +86,10 @@ CourseCourseLessons $CourseCourseLessonsFromJson(Map<String, dynamic> json) {
86 if (status != null) { 86 if (status != null) {
87 courseCourseLessons.status = status; 87 courseCourseLessons.status = status;
88 } 88 }
  89 + final String? courseModuleThemeColor = jsonConvert.convert<String>(json['courseModuleThemeColor']);
  90 + if (courseModuleThemeColor != null) {
  91 + courseCourseLessons.courseModuleThemeColor = courseModuleThemeColor;
  92 + }
89 return courseCourseLessons; 93 return courseCourseLessons;
90 } 94 }
91 95
@@ -103,5 +107,6 @@ Map&lt;String, dynamic&gt; $CourseCourseLessonsToJson(CourseCourseLessons entity) { @@ -103,5 +107,6 @@ Map&lt;String, dynamic&gt; $CourseCourseLessonsToJson(CourseCourseLessons entity) {
103 data['name'] = entity.name; 107 data['name'] = entity.name;
104 data['sortOrder'] = entity.sortOrder; 108 data['sortOrder'] = entity.sortOrder;
105 data['status'] = entity.status; 109 data['status'] = entity.status;
  110 + data['courseModuleThemeColor'] = entity.courseModuleThemeColor;
106 return data; 111 return data;
107 } 112 }
108 \ No newline at end of file 113 \ No newline at end of file
lib/main.dart
1 import 'dart:io'; 1 import 'dart:io';
  2 +
2 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
3 import 'package:flutter/services.dart'; 4 import 'package:flutter/services.dart';
4 -import 'package:limiting_direction_csx/limiting_direction_csx.dart';  
5 import 'package:wow_english/app/app.dart'; 5 import 'package:wow_english/app/app.dart';
6 -import 'package:flutter/services.dart';  
7 6
8 void main() { 7 void main() {
9 ///设置设备默认方向 8 ///设置设备默认方向
lib/models/course_entity.dart
@@ -36,6 +36,7 @@ class CourseCourseLessons { @@ -36,6 +36,7 @@ class CourseCourseLessons {
36 String? name; 36 String? name;
37 int? sortOrder; 37 int? sortOrder;
38 int? status; 38 int? status;
  39 + String? courseModuleThemeColor;
39 40
40 CourseCourseLessons(); 41 CourseCourseLessons();
41 42
lib/pages/home/home_page.dart
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_bloc/flutter_bloc.dart'; 2 import 'package:flutter_bloc/flutter_bloc.dart';
3 import 'package:flutter_screenutil/flutter_screenutil.dart'; 3 import 'package:flutter_screenutil/flutter_screenutil.dart';
4 -import 'package:wow_english/app/app.dart';  
5 import 'package:wow_english/common/core/user_util.dart'; 4 import 'package:wow_english/common/core/user_util.dart';
6 import 'package:wow_english/common/extension/string_extension.dart'; 5 import 'package:wow_english/common/extension/string_extension.dart';
7 import 'package:wow_english/models/course_entity.dart'; 6 import 'package:wow_english/models/course_entity.dart';
lib/pages/home/widgets/home_tab_header_widget.dart
@@ -71,10 +71,10 @@ class HomeTabHeaderWidget extends StatelessWidget { @@ -71,10 +71,10 @@ class HomeTabHeaderWidget extends StatelessWidget {
71 20.horizontalSpace, 71 20.horizontalSpace,
72 const Expanded( 72 const Expanded(
73 child: Text( 73 child: Text(
74 - 'learn wow',  
75 - textAlign: TextAlign.left,  
76 - style: TextStyle(color: Colors.white, fontSize: 30.0),  
77 - )), 74 + 'learn wow',
  75 + textAlign: TextAlign.left,
  76 + style: TextStyle(color: Colors.white, fontSize: 30.0),
  77 + )),
78 IconButton( 78 IconButton(
79 onPressed: () { 79 onPressed: () {
80 if (actionTap != null) { 80 if (actionTap != null) {
@@ -106,7 +106,7 @@ class HomeTabHeaderWidget extends StatelessWidget { @@ -106,7 +106,7 @@ class HomeTabHeaderWidget extends StatelessWidget {
106 // ), 106 // ),
107 ScreenUtil().bottomBarHeight.horizontalSpace, 107 ScreenUtil().bottomBarHeight.horizontalSpace,
108 ], 108 ],
109 - ), 109 + )
110 ); 110 );
111 } 111 }
112 } 112 }
lib/pages/home/widgets/home_vidoe_item.dart
@@ -12,17 +12,18 @@ class HomeVideoItem extends StatelessWidget { @@ -12,17 +12,18 @@ class HomeVideoItem extends StatelessWidget {
12 @override 12 @override
13 Widget build(BuildContext context) { 13 Widget build(BuildContext context) {
14 return Padding( 14 return Padding(
15 - padding: EdgeInsets.symmetric(horizontal: 12.w), 15 + padding: EdgeInsets.symmetric(horizontal: 12.w,vertical: 24.h),
16 child: Container( 16 child: Container(
17 width: 165.w, 17 width: 165.w,
18 padding: EdgeInsets.symmetric(horizontal: 16.w,vertical: 24.h), 18 padding: EdgeInsets.symmetric(horizontal: 16.w,vertical: 24.h),
19 decoration: BoxDecoration( 19 decoration: BoxDecoration(
20 image: DecorationImage( 20 image: DecorationImage(
21 image: AssetImage('gendubeij'.assetPng), 21 image: AssetImage('gendubeij'.assetPng),
  22 + fit: BoxFit.fill
22 ), 23 ),
23 ), 24 ),
24 child: Column( 25 child: Column(
25 - mainAxisAlignment: MainAxisAlignment.spaceAround, 26 + mainAxisAlignment: MainAxisAlignment.spaceBetween,
26 children: [ 27 children: [
27 Expanded( 28 Expanded(
28 child: Container( 29 child: Container(
@@ -35,7 +36,7 @@ class HomeVideoItem extends StatelessWidget { @@ -35,7 +36,7 @@ class HomeVideoItem extends StatelessWidget {
35 ), 36 ),
36 child: OwImageWidget( 37 child: OwImageWidget(
37 name: lessons?.coverUrl??'', 38 name: lessons?.coverUrl??'',
38 - fit: BoxFit.fill, 39 + fit: BoxFit.fitHeight,
39 ), 40 ),
40 )), 41 )),
41 24.verticalSpace, 42 24.verticalSpace,
lib/pages/listen/widgets/listen_item_widget.dart
@@ -25,7 +25,7 @@ class ListenItemWidget extends StatelessWidget { @@ -25,7 +25,7 @@ class ListenItemWidget extends StatelessWidget {
25 clickEvent.call(); 25 clickEvent.call();
26 }, 26 },
27 child: ClipRRect( 27 child: ClipRRect(
28 - borderRadius:BorderRadius.circular(90.r), 28 + borderRadius:BorderRadius.circular(90.h),
29 child: Stack( 29 child: Stack(
30 alignment:Alignment.center, 30 alignment:Alignment.center,
31 children: [ 31 children: [
lib/pages/login/forgetpwd/bloc/forget_pwd_home_bloc.dart
1 import 'package:common_utils/common_utils.dart'; 1 import 'package:common_utils/common_utils.dart';
2 import 'package:flutter/cupertino.dart'; 2 import 'package:flutter/cupertino.dart';
3 import 'package:flutter_bloc/flutter_bloc.dart'; 3 import 'package:flutter_bloc/flutter_bloc.dart';
  4 +import 'package:wow_english/common/request/dao/user_dao.dart';
  5 +import 'package:wow_english/common/request/exception.dart';
  6 +import 'package:wow_english/utils/loading.dart';
4 import 'package:wow_english/utils/toast_util.dart'; 7 import 'package:wow_english/utils/toast_util.dart';
5 8
6 part 'forget_pwd_home_event.dart'; 9 part 'forget_pwd_home_event.dart';
@@ -65,5 +68,21 @@ class ForgetPwdHomeBloc extends Bloc&lt;ForgetPwdHomeEvent, ForgetPwdHomeState&gt; { @@ -65,5 +68,21 @@ class ForgetPwdHomeBloc extends Bloc&lt;ForgetPwdHomeEvent, ForgetPwdHomeState&gt; {
65 emitter(SetPwdCheckCodeState()); 68 emitter(SetPwdCheckCodeState());
66 } 69 }
67 70
68 - void _sendSmsCode(SendSmsCodeEvent event, Emitter<ForgetPwdHomeState> emitter) async {} 71 + void _sendSmsCode(SendSmsCodeEvent event, Emitter<ForgetPwdHomeState> emitter) async {
  72 + final phoneNumber = phoneNumController.text;
  73 + if (!RegexUtil.isMobileExact(phoneNumber)) {
  74 + showToast('请检查手机号');
  75 + return;
  76 + }
  77 + try {
  78 + await loading(() async {
  79 + await UserDao.sendCode(phoneNumber,smsType:'change_passWord');
  80 + });
  81 + emitter(SendSmsCodeState());
  82 + } catch (e) {
  83 + if(e is ApiException) {
  84 + showToast(e.message??'网络请求失败');
  85 + }
  86 + }
  87 + }
69 } 88 }
lib/pages/repeataftercontent/repeat_after_content_page.dart
@@ -39,7 +39,7 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -39,7 +39,7 @@ class _RepeatAfterContentPage extends StatelessWidget {
39 Widget build(BuildContext context) { 39 Widget build(BuildContext context) {
40 return BlocListener<RepeatAfterContentBloc,RepeatAfterContentState>( 40 return BlocListener<RepeatAfterContentBloc,RepeatAfterContentState>(
41 listener: (context,state){ 41 listener: (context,state){
42 - debugPrint('123'); 42 +
43 }, 43 },
44 child: _repeatAfterContentView(), 44 child: _repeatAfterContentView(),
45 ); 45 );
@@ -56,7 +56,6 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -56,7 +56,6 @@ class _RepeatAfterContentPage extends StatelessWidget {
56 children: [ 56 children: [
57 ///返回 57 ///返回
58 Positioned( 58 Positioned(
59 - top: 13.h,  
60 child: GestureDetector( 59 child: GestureDetector(
61 onTap: () => popPage(), 60 onTap: () => popPage(),
62 child: Image.asset( 61 child: Image.asset(
@@ -68,7 +67,7 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -68,7 +67,7 @@ class _RepeatAfterContentPage extends StatelessWidget {
68 ), 67 ),
69 ///左侧视频区 68 ///左侧视频区
70 Positioned( 69 Positioned(
71 - top: 53.h, 70 + top: 40.h,
72 left: 20.w, 71 left: 20.w,
73 child: Container( 72 child: Container(
74 width: 285.w, 73 width: 285.w,
@@ -85,8 +84,8 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -85,8 +84,8 @@ class _RepeatAfterContentPage extends StatelessWidget {
85 ), 84 ),
86 ///右侧操作区 85 ///右侧操作区
87 Positioned( 86 Positioned(
88 - top: 53.h,  
89 - right: 25.w, 87 + top: 40.h,
  88 + left: 331.w,
90 child: Container( 89 child: Container(
91 width: 240.w, 90 width: 240.w,
92 height: 299.h, 91 height: 299.h,
@@ -103,8 +102,9 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -103,8 +102,9 @@ class _RepeatAfterContentPage extends StatelessWidget {
103 child: bloc.isRecord?_buildLongPressWidget():_buildPlayVideoWidget(), 102 child: bloc.isRecord?_buildLongPressWidget():_buildPlayVideoWidget(),
104 ), 103 ),
105 ), 104 ),
  105 + ///连接
106 Positioned( 106 Positioned(
107 - top: 72.h, 107 + top: 59.h,
108 left: 274.w, 108 left: 274.w,
109 child: Container( 109 child: Container(
110 width: 87.w, 110 width: 87.w,
@@ -119,7 +119,7 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -119,7 +119,7 @@ class _RepeatAfterContentPage extends StatelessWidget {
119 ), 119 ),
120 ///跟读 120 ///跟读
121 Positioned( 121 Positioned(
122 - top: 29.h, 122 + top: 16.h,
123 left: 65.w, 123 left: 65.w,
124 child: Container( 124 child: Container(
125 width: 185.w, 125 width: 185.w,
@@ -130,6 +130,7 @@ class _RepeatAfterContentPage extends StatelessWidget { @@ -130,6 +130,7 @@ class _RepeatAfterContentPage extends StatelessWidget {
130 fit: BoxFit.fill 130 fit: BoxFit.fill
131 ), 131 ),
132 ), 132 ),
  133 + alignment: Alignment.center,
133 child: Text( 134 child: Text(
134 'read title', 135 'read title',
135 textAlign: TextAlign.center, 136 textAlign: TextAlign.center,