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';
|
4b358e22
liangchengyou
feat:调整文件结构
|
7
|
import 'package:wow_english/common/widgets/we_app_bar.dart';
|
089ccd5c
Key
fixed: user util ...
|
8
|
import 'package:wow_english/models/user_entity.dart';
|
e12dbc82
Key
user module
|
9
|
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
|
c95453ce
Key
feat: User界面完善
|
10
|
import 'package:wow_english/route/route.dart';
|
c61b3c1a
Key
feat: toast_util....
|
11
|
import 'package:wow_english/utils/image_util.dart';
|
22b7d4da
Key
feat: user, api path
|
12
13
14
15
16
17
|
class UserPage extends StatelessWidget {
const UserPage({super.key});
@override
Widget build(BuildContext context) {
|
e12dbc82
Key
user module
|
18
19
|
return BlocProvider(
create: (context) => UserBloc(),
|
c95453ce
Key
feat: User界面完善
|
20
|
child: const _UserView(),
|
e12dbc82
Key
user module
|
21
22
23
24
25
26
27
|
);
}
}
class _UserView extends StatelessWidget {
const _UserView({super.key});
|
49e626e9
Key
feat: log_util.dart
|
28
29
|
final String bannerUrl = '';
|
e12dbc82
Key
user module
|
30
31
|
@override
Widget build(BuildContext context) {
|
c61b3c1a
Key
feat: toast_util....
|
32
33
|
return _pageWidget();
}
|
c95453ce
Key
feat: User界面完善
|
34
|
|
c61b3c1a
Key
feat: toast_util....
|
35
36
37
38
39
|
Widget _pageWidget() => BlocBuilder<UserBloc, UserState>(
/*buildWhen: (previous, current) {
return current != previous;
},*/
builder: (context, state) {
|
aa4e28be
Key
removed: cache_bl...
|
40
|
UserEntity user = UserUtil.getUser()!;
|
c61b3c1a
Key
feat: toast_util....
|
41
|
final userBloc = BlocProvider.of<UserBloc>(context);
|
c95453ce
Key
feat: User界面完善
|
42
|
|
c61b3c1a
Key
feat: toast_util....
|
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
// 常规按钮的字体样式
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...
|
59
|
//backgroundColor: Colors.white,
|
c61b3c1a
Key
feat: toast_util....
|
60
61
62
63
64
65
|
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: 修改个人信息、接口
|
66
67
68
69
70
71
72
73
74
|
// 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....
|
75
76
77
78
79
|
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
CircleAvatar(
radius: 40.r,
|
608c05b4
liangchengyou
feat:兑换课程
|
80
|
backgroundColor: const Color(0xFF140C10),
|
c61b3c1a
Key
feat: toast_util....
|
81
82
83
|
child: CircleAvatar(
radius: 38.5.r,
backgroundImage: ImageUtil.getImageProviderOnDefault(user.avatarUrl),
|
c95453ce
Key
feat: User界面完善
|
84
|
),
|
c61b3c1a
Key
feat: toast_util....
|
85
86
87
88
89
90
91
92
93
|
/*child: ClipOval(
child: OwImageWidget(name: user.avatarUrl ?? AssetsConst.wowLogo, fit: BoxFit.contain,),
)*/
),
32.horizontalSpace,
Expanded(
child: Column(
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
111
112
113
114
|
user.getGenderString(),
style: textStyle21sp,
),
14.horizontalSpace,
Offstage(
offstage: user.effectiveDate == null,
child: Image.asset(
AssetsConst.icVip,
height: 18.h,
|
c95453ce
Key
feat: User界面完善
|
115
116
117
118
|
),
)
],
),
|
c61b3c1a
Key
feat: toast_util....
|
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
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...
|
140
141
142
|
onPressed: () {
Navigator.of(AppRouter.context).pushNamed(AppRouteName.userInformation);
},
|
c61b3c1a
Key
feat: toast_util....
|
143
144
|
)
],
|
c95453ce
Key
feat: User界面完善
|
145
|
),
|
c61b3c1a
Key
feat: toast_util....
|
146
147
|
30.verticalSpace,
OutlinedButton(
|
da82bd70
Key
feat: user_inform...
|
148
|
onPressed: () => Navigator.of(context).pushNamed(AppRouteName.fogPwd),
|
c61b3c1a
Key
feat: toast_util....
|
149
150
151
152
153
|
style: normalButtonStyle,
child: Text(
"修改密码",
style: textStyle21sp,
),
|
c95453ce
Key
feat: User界面完善
|
154
|
),
|
c61b3c1a
Key
feat: toast_util....
|
155
156
|
12.verticalSpace,
OutlinedButton(
|
608c05b4
liangchengyou
feat:兑换课程
|
157
|
onPressed: () => Navigator.of(context).pushNamed(AppRouteName.exLesson),
|
c61b3c1a
Key
feat: toast_util....
|
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
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: 修改个人信息、接口
|
176
|
onPressed: () => userBloc.add(UserLogout()),
|
c61b3c1a
Key
feat: toast_util....
|
177
178
179
180
181
182
183
184
|
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: 修改个人信息、接口
|
185
|
"退出登录",
|
c61b3c1a
Key
feat: toast_util....
|
186
187
188
189
190
191
192
193
194
195
196
|
style: TextStyle(
//fontWeight: FontWeight.w600,
color: Colors.white,
fontSize: 17.sp,
),
)),
],
),
));
},
);
|
22b7d4da
Key
feat: user, api path
|
197
|
}
|