c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
1
2
3
4
5
6
7
8
9
10
|
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/common/widgets/ow_image_widget.dart';
import 'package:wow_english/common/widgets/we_app_bar.dart';
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
import 'package:wow_english/pages/user/modify/user_avatar_bloc/user_avatar_bloc.dart';
|
b15fde72
liangchengyou
feat:头像上传功能完善逻辑
|
11
|
import 'package:wow_english/route/route.dart';
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
12
13
|
import 'package:wow_english/utils/toast_util.dart';
|
b15fde72
liangchengyou
feat:头像上传功能完善逻辑
|
14
15
|
import 'modify_user_information_page.dart';
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
16
17
18
19
20
21
22
23
24
|
class ModifyUserAvatarPage extends StatelessWidget {
const ModifyUserAvatarPage({super.key, required this.pageType});
/// 0 新用户设置头像 1 修改头像
final int pageType;
@override
Widget build(BuildContext context) {
return BlocProvider(
|
1daca20d
吴启风
pref:权限申请页面优化
|
25
|
create: (context) => UserAvatarBloc(context),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
26
27
28
29
30
31
32
|
child: _ModifyUserAvatarPage(pageType: pageType),
);
}
}
class _ModifyUserAvatarPage extends StatelessWidget {
const _ModifyUserAvatarPage({required this.pageType});
|
bc0550ae
Key
fixed: avatar修改
|
33
|
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
34
35
36
37
38
39
|
final int pageType;
@override
Widget build(BuildContext context) {
return MultiBlocListener(
listeners: [
|
bc0550ae
Key
fixed: avatar修改
|
40
41
42
43
44
45
46
47
48
49
50
51
|
BlocListener<UserBloc, UserState>(listener: (context, state) {
if (state is UserInfoUpdated) {
if (pageType == 1) {
showToast('修改成功');
popPage();
} else {
context.read<UserAvatarBloc>().add(ChangeUserEnterAppStateEvent());
}
}
}),
BlocListener<UserAvatarBloc, UserAvatarState>(
listener: (context, state) {
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
52
|
if (state is ChangeImageState) {
|
bc0550ae
Key
fixed: avatar修改
|
53
|
context.read<UserBloc>().add(UserUpdate(ModifyUserInformationType.avatar, state.imageUrl));
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
54
|
}
|
bc0550ae
Key
fixed: avatar修改
|
55
56
|
},
)
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
57
|
],
|
bc0550ae
Key
fixed: avatar修改
|
58
|
child: pageType == 0 ? _setUserAvatarView() : _modifyUserAvatarPageView(),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
59
60
61
62
|
);
}
///个人信息修改头像
|
bc0550ae
Key
fixed: avatar修改
|
63
|
Widget _modifyUserAvatarPageView() => BlocBuilder<UserAvatarBloc, UserAvatarState>(builder: (context, state) {
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
64
|
return Scaffold(
|
bc0550ae
Key
fixed: avatar修改
|
65
|
appBar: const WEAppBar(
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
titleText: '头像修改',
),
body: SafeArea(
child: Column(
children: [
20.verticalSpace,
_avatarImageWidget(),
],
),
),
);
});
///新用户设置头像
|
bc0550ae
Key
fixed: avatar修改
|
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
Widget _setUserAvatarView() => BlocBuilder<UserAvatarBloc, UserAvatarState>(builder: (context, state) {
final bloc = BlocProvider.of<UserAvatarBloc>(context);
return Container(
color: Colors.white,
child: SafeArea(
child: Column(
children: [
20.verticalSpace,
Row(
children: [
Image.asset(
'wow_logo'.assetPng,
height: 49.h,
width: 84.w,
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
94
|
),
|
bc0550ae
Key
fixed: avatar修改
|
95
96
97
98
|
Text(
'欢迎登录wow english\n接下来请填写一下您的个人信息吧',
textAlign: TextAlign.left,
style: TextStyle(fontSize: 17.sp, color: const Color(0xFF666666)),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
99
|
)
|
bc0550ae
Key
fixed: avatar修改
|
100
|
],
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
101
|
),
|
bc0550ae
Key
fixed: avatar修改
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
15.verticalSpace,
_avatarImageWidget(),
10.verticalSpace,
Container(
width: 176.w,
height: 52.h,
padding: const EdgeInsets.all(5),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(bloc.canInsertApp ? 'oninto'.assetPng : 'intowow'.assetPng),
fit: BoxFit.fill)),
alignment: Alignment.center,
child: Text(
'进入wow english',
textAlign: TextAlign.center,
style: TextStyle(fontSize: 12.sp, color: Colors.white),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
118
|
),
|
bc0550ae
Key
fixed: avatar修改
|
119
120
121
|
)
],
),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
122
|
),
|
bc0550ae
Key
fixed: avatar修改
|
123
124
|
);
});
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
125
|
|
bc0550ae
Key
fixed: avatar修改
|
126
|
Widget _avatarImageWidget() => BlocBuilder<UserAvatarBloc, UserAvatarState>(builder: (context, state) {
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
127
128
129
130
131
132
133
134
135
|
final bloc = BlocProvider.of<UserAvatarBloc>(context);
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
width: 205.w,
height: 197.h,
padding: const EdgeInsets.all(5),
decoration: BoxDecoration(
|
bc0550ae
Key
fixed: avatar修改
|
136
137
138
139
140
141
142
|
image: DecorationImage(image: AssetImage('video_background'.assetPng), fit: BoxFit.fill)),
child: bloc.file == null
? OwImageWidget(name: bloc.imageUrl)
: Image.file(
File(bloc.file!.path),
fit: BoxFit.fill,
),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
143
144
145
146
147
148
149
150
151
152
153
|
),
54.horizontalSpace,
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: () => bloc.add(GetImageFromCameraEvent()),
child: Container(
width: 222.w,
height: 65.h,
alignment: Alignment.center,
|
bc0550ae
Key
fixed: avatar修改
|
154
155
|
decoration:
BoxDecoration(image: DecorationImage(image: AssetImage('alter'.assetPng), fit: BoxFit.fill)),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
156
157
158
|
child: Text(
'拍照修改头像',
textAlign: TextAlign.center,
|
bc0550ae
Key
fixed: avatar修改
|
159
|
style: TextStyle(color: Colors.white, fontSize: 20.sp),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
160
161
162
163
164
165
166
167
168
169
|
),
),
),
20.verticalSpace,
GestureDetector(
onTap: () => bloc.add(GetImageFromPhotoEvent()),
child: Container(
width: 222.w,
height: 65.h,
alignment: Alignment.center,
|
bc0550ae
Key
fixed: avatar修改
|
170
171
|
decoration:
BoxDecoration(image: DecorationImage(image: AssetImage('alter'.assetPng), fit: BoxFit.fill)),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
172
173
174
|
child: Text(
'从相册选择',
textAlign: TextAlign.center,
|
bc0550ae
Key
fixed: avatar修改
|
175
|
style: TextStyle(color: Colors.white, fontSize: 20.sp),
|
c948a9ea
liangchengyou
feat:个人信息更改模块功能
|
176
177
178
179
180
181
182
183
|
),
),
)
],
)
],
);
});
|
b830911b
Key
增加头像上传的地方,待测试
|
184
|
}
|