22b7d4da
Key
feat: user, api path
|
1
|
import 'package:flutter/material.dart';
|
089ccd5c
Key
fixed: user util ...
|
2
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
e12dbc82
Key
user module
|
3
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
c61b3c1a
Key
feat: toast_util....
|
4
|
import 'package:wow_english/common/core/app_consts.dart';
|
e12dbc82
Key
user module
|
5
|
import 'package:wow_english/common/core/assets_const.dart';
|
aa4e28be
Key
removed: cache_bl...
|
6
|
import 'package:wow_english/common/core/user_util.dart';
|
bb0406fb
Key
feat: 账户注销
|
7
|
import 'package:wow_english/common/dialogs/show_dialog.dart';
|
4b358e22
liangchengyou
feat:调整文件结构
|
8
|
import 'package:wow_english/common/widgets/we_app_bar.dart';
|
089ccd5c
Key
fixed: user util ...
|
9
|
import 'package:wow_english/models/user_entity.dart';
|
e12dbc82
Key
user module
|
10
|
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
|
c95453ce
Key
feat: User界面完善
|
11
|
import 'package:wow_english/route/route.dart';
|
c61b3c1a
Key
feat: toast_util....
|
12
|
import 'package:wow_english/utils/image_util.dart';
|
22b7d4da
Key
feat: user, api path
|
13
14
15
16
17
18
|
class UserPage extends StatelessWidget {
const UserPage({super.key});
@override
Widget build(BuildContext context) {
|
e12dbc82
Key
user module
|
19
20
|
return BlocProvider(
create: (context) => UserBloc(),
|
c95453ce
Key
feat: User界面完善
|
21
|
child: const _UserView(),
|
e12dbc82
Key
user module
|
22
23
24
25
26
27
28
|
);
}
}
class _UserView extends StatelessWidget {
const _UserView({super.key});
|
49e626e9
Key
feat: log_util.dart
|
29
30
|
final String bannerUrl = '';
|
e12dbc82
Key
user module
|
31
32
|
@override
Widget build(BuildContext context) {
|
c61b3c1a
Key
feat: toast_util....
|
33
34
|
return _pageWidget();
}
|
c95453ce
Key
feat: User界面完善
|
35
|
|
c61b3c1a
Key
feat: toast_util....
|
36
37
38
39
40
|
Widget _pageWidget() => BlocBuilder<UserBloc, UserState>(
/*buildWhen: (previous, current) {
return current != previous;
},*/
builder: (context, state) {
|
aa4e28be
Key
removed: cache_bl...
|
41
|
UserEntity user = UserUtil.getUser()!;
|
c61b3c1a
Key
feat: toast_util....
|
42
|
final userBloc = BlocProvider.of<UserBloc>(context);
|
c95453ce
Key
feat: User界面完善
|
43
|
|
c61b3c1a
Key
feat: toast_util....
|
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
// 常规按钮的字体样式
final textStyle21sp = TextStyle(
//fontWeight: FontWeight.w600,
color: const Color(0xFF333333),
fontSize: 21.sp,
);
// 常规按钮的样式
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),
);
return Scaffold(
|
da82bd70
Key
feat: user_inform...
|
60
|
//backgroundColor: Colors.white,
|
c61b3c1a
Key
feat: toast_util....
|
61
62
63
64
65
66
|
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>[
|
c9df43c8
Key
feat: 修改个人信息、接口
|
67
68
69
70
71
72
73
74
75
|
// todo banner,暂时没有接口获取banner URL
/*Offstage(
child: Column(
children: [
Container(child: Image.asset(bannerUrl), constraints: BoxConstraints(maxHeight: 196.h)),
30.verticalSpace,
],
),
),*/
|
c61b3c1a
Key
feat: toast_util....
|
76
77
78
79
80
|
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
CircleAvatar(
radius: 40.r,
|
608c05b4
liangchengyou
feat:兑换课程
|
81
|
backgroundColor: const Color(0xFF140C10),
|
c61b3c1a
Key
feat: toast_util....
|
82
83
84
|
child: CircleAvatar(
radius: 38.5.r,
backgroundImage: ImageUtil.getImageProviderOnDefault(user.avatarUrl),
|
c95453ce
Key
feat: User界面完善
|
85
|
),
|
c61b3c1a
Key
feat: toast_util....
|
86
87
88
89
90
91
92
93
94
|
/*child: ClipOval(
child: OwImageWidget(name: user.avatarUrl ?? AssetsConst.wowLogo, fit: BoxFit.contain,),
)*/
),
32.horizontalSpace,
Expanded(
child: Column(
children: [
Row(
|
c95453ce
Key
feat: User界面完善
|
95
|
children: [
|
c61b3c1a
Key
feat: toast_util....
|
96
97
98
99
100
101
102
103
104
105
|
LimitedBox(
maxWidth: 220.w,
child: Text(
user.name,
//'1231231231312312312312312312312312312312312312312',
style: textStyle21sp,
overflow: TextOverflow.ellipsis,
),
),
14.horizontalSpace,
|
c95453ce
Key
feat: User界面完善
|
106
|
Text(
|
c61b3c1a
Key
feat: toast_util....
|
107
108
109
110
111
112
113
114
115
|
user.getGenderString(),
style: textStyle21sp,
),
14.horizontalSpace,
Offstage(
offstage: user.effectiveDate == null,
child: Image.asset(
AssetsConst.icVip,
height: 18.h,
|
c95453ce
Key
feat: User界面完善
|
116
117
118
119
|
),
)
],
),
|
c61b3c1a
Key
feat: toast_util....
|
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
Offstage(
offstage: user.effectiveDate == null,
child: Row(
children: [
Text(
"${user.effectiveDate} 到期",
style: TextStyle(
color: const Color(0xFFE11212),
fontSize: 17.sp,
),
)
],
),
)
],
)),
TextButton(
child: Text(
"修改个人信息>",
style: textStyle21sp,
),
|
da82bd70
Key
feat: user_inform...
|
141
142
143
|
onPressed: () {
Navigator.of(AppRouter.context).pushNamed(AppRouteName.userInformation);
},
|
c61b3c1a
Key
feat: toast_util....
|
144
145
|
)
],
|
c95453ce
Key
feat: User界面完善
|
146
|
),
|
c61b3c1a
Key
feat: toast_util....
|
147
148
|
30.verticalSpace,
OutlinedButton(
|
da82bd70
Key
feat: user_inform...
|
149
|
onPressed: () => Navigator.of(context).pushNamed(AppRouteName.fogPwd),
|
c61b3c1a
Key
feat: toast_util....
|
150
151
152
153
154
|
style: normalButtonStyle,
child: Text(
"修改密码",
style: textStyle21sp,
),
|
c95453ce
Key
feat: User界面完善
|
155
|
),
|
c61b3c1a
Key
feat: toast_util....
|
156
157
|
12.verticalSpace,
OutlinedButton(
|
608c05b4
liangchengyou
feat:兑换课程
|
158
|
onPressed: () => Navigator.of(context).pushNamed(AppRouteName.exLesson),
|
c61b3c1a
Key
feat: toast_util....
|
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
style: normalButtonStyle,
child: Text(
"兑换课程",
style: textStyle21sp,
)),
12.verticalSpace,
OutlinedButton(
onPressed: () => {
Navigator.of(context).pushNamed(AppRouteName.webView,
arguments: {'urlStr': AppConsts.userPrivacyPolicyUrl, 'webViewTitle': '隐私协议'})
},
style: normalButtonStyle,
child: Text(
"隐私协议",
style: textStyle21sp,
)),
30.verticalSpace,
OutlinedButton(
|
c9df43c8
Key
feat: 修改个人信息、接口
|
177
|
onPressed: () => userBloc.add(UserLogout()),
|
c61b3c1a
Key
feat: toast_util....
|
178
179
180
181
182
183
184
185
|
style: ButtonStyle(
side: MaterialStateProperty.all(BorderSide(color: const Color(0xFF140C10), width: 1.5)),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(borderRadius: BorderRadius.circular(15.r))),
minimumSize: MaterialStateProperty.all(Size(295.w, 40.h)),
backgroundColor: MaterialStateProperty.all(Color(0xFFFBB621)),
),
child: Text(
|
c9df43c8
Key
feat: 修改个人信息、接口
|
186
|
"退出登录",
|
c61b3c1a
Key
feat: toast_util....
|
187
188
189
190
191
192
|
style: TextStyle(
//fontWeight: FontWeight.w600,
color: Colors.white,
fontSize: 17.sp,
),
)),
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
193
194
|
30.verticalSpace,
TextButton(
|
bb0406fb
Key
feat: 账户注销
|
195
196
197
198
199
200
201
202
203
|
onPressed: () {
//userBloc.add(UserDelete())
showTwoActionDialog('注销账号', '取消', '注销', '请谨慎操作!\n注销后不可恢复哦!', () {
popPage();
}, () {
userBloc.add(UserDelete());
popPage();
});
},
|
a4d8eaa2
Key
feat: 登录时账户有效性校验
|
204
205
206
207
208
209
210
211
|
child: Text(
"注销账号",
style: TextStyle(
//fontWeight: FontWeight.w600,
color: Colors.red,
fontSize: 15.sp,
),
)),
|
c61b3c1a
Key
feat: toast_util....
|
212
213
214
215
216
|
],
),
));
},
);
|
22b7d4da
Key
feat: user, api path
|
217
|
}
|