8b5ef002
xiaoyu
添加打开游戏的测试代码
|
1
2
3
|
import 'dart:io';
import 'dart:async';
import 'package:flutter/services.dart';
|
22b7d4da
Key
feat: user, api path
|
4
|
import 'package:flutter/material.dart';
|
089ccd5c
Key
fixed: user util ...
|
5
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
e12dbc82
Key
user module
|
6
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
8d1f93b4
吴启风
feat:隐藏组件优化
|
7
|
import 'package:wow_english/common/core/app_config_helper.dart';
|
c61b3c1a
Key
feat: toast_util....
|
8
|
import 'package:wow_english/common/core/app_consts.dart';
|
e12dbc82
Key
user module
|
9
|
import 'package:wow_english/common/core/assets_const.dart';
|
aa4e28be
Key
removed: cache_bl...
|
10
|
import 'package:wow_english/common/core/user_util.dart';
|
bb0406fb
Key
feat: 账户注销
|
11
|
import 'package:wow_english/common/dialogs/show_dialog.dart';
|
4b358e22
liangchengyou
feat:调整文件结构
|
12
|
import 'package:wow_english/common/widgets/we_app_bar.dart';
|
089ccd5c
Key
fixed: user util ...
|
13
|
import 'package:wow_english/models/user_entity.dart';
|
e12dbc82
Key
user module
|
14
|
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
|
c95453ce
Key
feat: User界面完善
|
15
|
import 'package:wow_english/route/route.dart';
|
c61b3c1a
Key
feat: toast_util....
|
16
|
import 'package:wow_english/utils/image_util.dart';
|
dfd4d15d
xiaoyu
添加联系客服功能
|
17
|
import 'package:url_launcher/url_launcher.dart';
|
22b7d4da
Key
feat: user, api path
|
18
19
20
21
22
23
|
class UserPage extends StatelessWidget {
const UserPage({super.key});
@override
Widget build(BuildContext context) {
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
24
|
return _UserView();
|
e12dbc82
Key
user module
|
25
26
27
28
|
}
}
class _UserView extends StatelessWidget {
|
49e626e9
Key
feat: log_util.dart
|
29
30
|
final String bannerUrl = '';
|
8b5ef002
xiaoyu
添加打开游戏的测试代码
|
31
32
33
|
/// 方法
final MethodChannel methodChannel = const MethodChannel('wow_english/game_method_channel');
|
e12dbc82
Key
user module
|
34
35
|
@override
Widget build(BuildContext context) {
|
c61b3c1a
Key
feat: toast_util....
|
36
37
|
return _pageWidget();
}
|
c95453ce
Key
feat: User界面完善
|
38
|
|
c61b3c1a
Key
feat: toast_util....
|
39
|
Widget _pageWidget() => BlocBuilder<UserBloc, UserState>(
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
40
41
42
|
builder: (context, state) {
UserEntity user = UserUtil.getUser()!;
final userBloc = BlocProvider.of<UserBloc>(context);
|
c95453ce
Key
feat: User界面完善
|
43
|
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
44
45
46
47
48
49
|
// 常规按钮的字体样式
final textStyle21sp = TextStyle(
//fontWeight: FontWeight.w600,
color: const Color(0xFF333333),
fontSize: 21.sp,
);
|
c61b3c1a
Key
feat: toast_util....
|
50
|
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
51
52
53
54
55
56
57
|
// 常规按钮的样式
var normalButtonStyle = ButtonStyle(
side: MaterialStateProperty.all(BorderSide(color: const Color(0xFF140C10), width: 1.5.w)),
shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))),
minimumSize: MaterialStateProperty.all(Size(double.infinity, 58.h)),
backgroundColor: MaterialStateProperty.all(Colors.white),
);
|
c61b3c1a
Key
feat: toast_util....
|
58
|
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
59
60
61
62
63
64
65
66
67
|
return Scaffold(
appBar: const WEAppBar(),
body: SingleChildScrollView(
padding: EdgeInsets.only(left: 17.w, right: 17.w, top: 10.h, bottom: 22.h),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// todo banner,暂时没有接口获取banner URL
/*Offstage(
|
c9df43c8
Key
feat: 修改个人信息、接口
|
68
69
70
71
72
73
74
|
child: Column(
children: [
Container(child: Image.asset(bannerUrl), constraints: BoxConstraints(maxHeight: 196.h)),
30.verticalSpace,
],
),
),*/
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
75
76
77
78
79
80
81
82
83
84
85
|
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
CircleAvatar(
radius: 40.r,
backgroundColor: const Color(0xFF140C10),
child: CircleAvatar(
radius: 38.5.r,
backgroundImage: ImageUtil.getImageProviderOnDefault(user.avatarUrl),
),
/*child: ClipOval(
|
c61b3c1a
Key
feat: toast_util....
|
86
87
|
child: OwImageWidget(name: user.avatarUrl ?? AssetsConst.wowLogo, fit: BoxFit.contain,),
)*/
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
88
89
90
91
|
),
32.horizontalSpace,
Expanded(
child: Column(
|
c61b3c1a
Key
feat: toast_util....
|
92
93
|
children: [
Row(
|
c95453ce
Key
feat: User界面完善
|
94
|
children: [
|
c61b3c1a
Key
feat: toast_util....
|
95
96
97
98
99
100
101
102
103
104
|
LimitedBox(
maxWidth: 220.w,
child: Text(
user.name,
//'1231231231312312312312312312312312312312312312312',
style: textStyle21sp,
overflow: TextOverflow.ellipsis,
),
),
14.horizontalSpace,
|
c95453ce
Key
feat: User界面完善
|
105
|
Text(
|
c61b3c1a
Key
feat: toast_util....
|
106
107
108
109
110
|
user.getGenderString(),
style: textStyle21sp,
),
14.horizontalSpace,
Offstage(
|
0529078d
吴启风
feat:隐藏用户信息页内购元素
|
111
|
offstage: user.effectiveDate == null || AppConfigHelper.shouldHidePay(),
|
c61b3c1a
Key
feat: toast_util....
|
112
113
114
|
child: Image.asset(
AssetsConst.icVip,
height: 18.h,
|
c95453ce
Key
feat: User界面完善
|
115
116
117
118
|
),
)
],
),
|
c61b3c1a
Key
feat: toast_util....
|
119
|
Offstage(
|
0529078d
吴启风
feat:隐藏用户信息页内购元素
|
120
|
offstage: user.effectiveDate == null || AppConfigHelper.shouldHidePay(),
|
c61b3c1a
Key
feat: toast_util....
|
121
122
123
|
child: Row(
children: [
Text(
|
7d417b04
吴启风
feat:fix用户vip到期日问题
|
124
|
"${user.getEffectiveDate()} 到期",
|
c61b3c1a
Key
feat: toast_util....
|
125
126
127
128
129
130
131
132
133
134
|
style: TextStyle(
color: const Color(0xFFE11212),
fontSize: 17.sp,
),
)
],
),
)
],
)),
|
2e5751ab
liangchengyou
feat:更新版本号1.0.2
|
135
136
137
138
|
TextButton(
child: Text(
"修改个人信息>",
style: textStyle21sp,
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
139
|
),
|
2e5751ab
liangchengyou
feat:更新版本号1.0.2
|
140
141
142
|
onPressed: () {
pushNamed(AppRouteName.userInformation);
},
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
143
|
)
|
c61b3c1a
Key
feat: toast_util....
|
144
145
|
],
),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
146
|
30.verticalSpace,
|
68a4c50a
xiaoyu
Merge remote-trac...
|
147
148
|
// 打开游戏界面 供审核用
((UserUtil.getUser()?.phoneNum == '17730280759' || UserUtil.getUser()?.phoneNum == '17718485544') ? OutlinedButton(
|
8b5ef002
xiaoyu
添加打开游戏的测试代码
|
149
|
onPressed: () {
|
68a4c50a
xiaoyu
Merge remote-trac...
|
150
|
methodChannel.invokeMethod('openGamePage', { "gameId": 1 });
|
8b5ef002
xiaoyu
添加打开游戏的测试代码
|
151
152
153
|
},
style: normalButtonStyle,
child: Text(
|
68a4c50a
xiaoyu
Merge remote-trac...
|
154
|
"进入游戏",
|
8b5ef002
xiaoyu
添加打开游戏的测试代码
|
155
156
|
style: textStyle21sp,
),
|
68a4c50a
xiaoyu
Merge remote-trac...
|
157
158
|
) : 1.verticalSpace),
((UserUtil.getUser()?.phoneNum == '17730280759' || UserUtil.getUser()?.phoneNum == '17718485544') ? 12.verticalSpace : 1.verticalSpace),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
159
160
161
162
163
164
165
166
167
|
OutlinedButton(
onPressed: () => pushNamed(AppRouteName.fogPwd),
style: normalButtonStyle,
child: Text(
"修改密码",
style: textStyle21sp,
),
),
12.verticalSpace,
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
168
|
Offstage(
|
8d1f93b4
吴启风
feat:隐藏组件优化
|
169
|
offstage: AppConfigHelper.shouldHidePay(),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
170
171
172
173
174
175
176
177
178
|
child: OutlinedButton(
onPressed: () => pushNamed(AppRouteName.exLesson),
style: normalButtonStyle,
child: Text(
"兑换课程",
style: textStyle21sp,
)),
),
Offstage(
|
8d1f93b4
吴启风
feat:隐藏组件优化
|
179
|
offstage: AppConfigHelper.shouldHidePay(),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
180
181
182
183
184
185
186
187
188
189
190
|
child: 12.verticalSpace,
),
OutlinedButton(
onPressed: () {
pushNamed(AppRouteName.webView,arguments: {'urlStr': AppConsts.userPrivacyPolicyUrl, 'webViewTitle': '隐私协议'});
},
style: normalButtonStyle,
child: Text(
"隐私协议",
style: textStyle21sp,
)),
|
3840b7fe
liangchengyou
feat:更新设置页面
|
191
192
193
|
12.verticalSpace,
OutlinedButton(
onPressed: () {
|
dfd4d15d
xiaoyu
添加联系客服功能
|
194
195
196
197
198
199
200
201
202
203
204
|
String phone ='tel:+8618856084180';
_launchPhone(phone);
},
style: normalButtonStyle,
child: Text(
"联系客服",
style: textStyle21sp,
)),
12.verticalSpace,
OutlinedButton(
onPressed: () {
|
3840b7fe
liangchengyou
feat:更新设置页面
|
205
206
207
208
209
210
211
|
pushNamed(AppRouteName.setting);
},
style: normalButtonStyle,
child: Text(
"设置",
style: textStyle21sp,
)),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
212
213
|
30.verticalSpace,
OutlinedButton(
|
68dd7ba8
liangchengyou
feat:首页主题颜色+已知问题修改
|
214
|
onPressed: () {
|
3840b7fe
liangchengyou
feat:更新设置页面
|
215
|
showTwoActionDialog(barrierDismissible:false,'提示', '取消', '确认', '您确认要退出Wow English吗?',leftTap: (){
|
68dd7ba8
liangchengyou
feat:首页主题颜色+已知问题修改
|
216
|
popPage();
|
3840b7fe
liangchengyou
feat:更新设置页面
|
217
|
},rightTap: (){
|
68dd7ba8
liangchengyou
feat:首页主题颜色+已知问题修改
|
218
219
220
221
|
popPage();
userBloc.add(UserLogout());
});
},
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
222
223
224
225
226
|
style: ButtonStyle(
side: MaterialStateProperty.all(const BorderSide(color: Color(0xFF140C10), width: 1.5)),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))),
minimumSize: MaterialStateProperty.all(Size(295.w, 40.h)),
|
68dd7ba8
liangchengyou
feat:首页主题颜色+已知问题修改
|
227
|
backgroundColor: MaterialStateProperty.all(const Color(0xFFFBB621)),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
228
229
230
231
232
233
234
235
236
|
),
child: Text(
"退出登录",
style: TextStyle(
//fontWeight: FontWeight.w600,
color: Colors.white,
fontSize: 17.sp,
),
)),
|
3840b7fe
liangchengyou
feat:更新设置页面
|
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
// 30.verticalSpace,
// TextButton(
// onPressed: () {
// //userBloc.add(UserDelete())
// showTwoActionDialog('注销账号', '取消', '注销', '请谨慎操作!\n注销后不可恢复哦!', () {
// popPage();
// }, () {
// userBloc.add(UserDelete());
// popPage();
// });
// },
// child: Text(
// "注销账号",
// style: TextStyle(
// //fontWeight: FontWeight.w600,
// color: Colors.red,
// fontSize: 15.sp,
// ),
// )),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
256
257
258
259
260
|
],
),
));
},
);
|
dfd4d15d
xiaoyu
添加联系客服功能
|
261
262
263
264
265
266
267
268
|
void _launchPhone(String phone) async {
if (await canLaunchUrl(Uri.parse(phone))) {
await launchUrl(Uri.parse(phone));
} else {
throw 'Could not phone $phone';
}
}
|
22b7d4da
Key
feat: user, api path
|
269
|
}
|