Blame view

lib/pages/user/modify/modify_user_avatar_page.dart 6.46 KB
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
  }