user_information_page.dart
5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/core/assets_const.dart';
import 'package:wow_english/common/core/user_util.dart';
import 'package:wow_english/common/widgets/we_app_bar.dart';
import 'package:wow_english/models/user_entity.dart';
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
import 'package:wow_english/utils/image_util.dart';
import 'package:wow_english/utils/log_util.dart';
import '../modify/modify_user_information_page.dart';
class UserInformationPage extends StatelessWidget {
const UserInformationPage({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => UserBloc(),
child: const _UserInformationView(),
);
}
}
class _UserInformationView extends StatelessWidget {
const _UserInformationView({super.key});
@override
Widget build(BuildContext context) {
return BlocListener<UserBloc, UserState>(
listener: (context, state) {
Log.d('UserInformationPage: $state');
},
child: BlocBuilder<UserBloc, UserState>(builder: (context, state) {
return _UserInformationContentView();
}),
);
}
}
class _UserInformationContentView extends StatelessWidget {
void _openModifyPage(BuildContext context, ModifyUserInformationType type) {
Log.d('_openModifyPage($type)');
// 暂时关闭修改,修复后打开
// ModifyUserInformationPage.push(context, type);
}
@override
Widget build(BuildContext context) {
UserEntity user = UserUtil.getUser()!;
return Scaffold(
backgroundColor: Colors.white,
appBar: const WEAppBar(
titleText: "个人信息",
),
body: SingleChildScrollView(
padding: EdgeInsets.only(left: 17.w, right: 17.w, top: 10.h, bottom: 22.h),
child: Column(
children: [
_buildContentRow(
'头像',
CircleAvatar(
radius: 22.5.r,
backgroundColor: const Color(0xFF140C10),
child: CircleAvatar(
radius: 21.r,
backgroundImage: ImageUtil.getImageProviderOnDefault(user.avatarUrl),
),
)),
11.verticalSpace,
_buildContentRow(
'名字',
Text(
user.name,
style: TextStyle(
fontWeight: FontWeight.w500,
color: const Color(0xFF333333),
fontSize: 21.sp,
),
),
onTap: () => _openModifyPage(context, ModifyUserInformationType.name)),
11.verticalSpace,
_buildContentRow(
'年龄',
Text(
user.age.toString(),
style: TextStyle(
fontWeight: FontWeight.w500,
color: const Color(0xFF333333),
fontSize: 21.sp,
),
),
onTap: () => _openModifyPage(context, ModifyUserInformationType.age)),
11.verticalSpace,
_buildContentRow(
'性别',
Text(
user.getGenderString(),
style: TextStyle(
fontWeight: FontWeight.w500,
color: const Color(0xFF333333),
fontSize: 21.sp,
),
),
onTap: () => _openModifyPage(context, ModifyUserInformationType.gender)),
11.verticalSpace,
_buildContentRow(
'账号',
Text(
user.phoneNum,
style: TextStyle(
fontWeight: FontWeight.w500,
color: const Color(0xFF999999),
fontSize: 21.sp,
),
),
isHideEndIcon: true,
),
],
),
),
);
}
Widget _buildContentRow(String filedName, Widget contentWidget, {bool isHideEndIcon = false, Function()? onTap}) {
return GestureDetector(
onTap: onTap,
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 18.h, bottom: 18.h),
decoration: BoxDecoration(
image: DecorationImage(
image: ImageUtil.getImageProviderOnDefault(AssetsConst.bgUserInformationText), fit: BoxFit.fill)),
child: Row(children: [
Text(
filedName,
style: TextStyle(
fontWeight: FontWeight.w700,
color: const Color(0xFF999999),
fontSize: 21.sp,
),
),
32.horizontalSpace,
Expanded(
child: Container(
alignment: Alignment.centerLeft,
child: contentWidget,
)),
Offstage(
offstage: isHideEndIcon,
child: Image.asset(AssetsConst.icNext, width: 20.w, height: 25.h),
)
]),
));
}
}